diff --git a/ast.go b/ast.go index 1eeb2f8..9eab21a 100644 --- a/ast.go +++ b/ast.go @@ -34,6 +34,9 @@ type Instruction struct { Opcode string Operands []operand.Op + Inputs []operand.Op + Outputs []operand.Op + IsTerminal bool IsBranch bool IsConditional bool diff --git a/internal/gen/asmtest.go b/internal/gen/asmtest.go index 87ce5b9..f97818b 100644 --- a/internal/gen/asmtest.go +++ b/internal/gen/asmtest.go @@ -14,6 +14,7 @@ type asmtest struct { sym string // reference to the test function symbol rel8 string // label to be used for near jumps rel32 string // label for far jumps + generator } func NewAsmTest(cfg Config) Interface { @@ -21,53 +22,51 @@ func NewAsmTest(cfg Config) Interface { } func (a *asmtest) Generate(is []inst.Instruction) ([]byte, error) { - p := &printer{} - - p.Printf("// %s\n\n", a.cfg.GeneratedWarning()) + a.Printf("// %s\n\n", a.cfg.GeneratedWarning()) a.sym = "\u00b7loadertest(SB)" - p.Printf("TEXT %s, 0, $0\n", a.sym) + a.Printf("TEXT %s, 0, $0\n", a.sym) // Define a label for far jumps. - p.Printf("rel32:\n") + a.Printf("rel32:\n") a.rel32 = "rel32" counts := map[string]int{} for _, i := range is { - p.Printf("\t// %s %s\n", i.Opcode, i.Summary) + a.Printf("\t// %s %s\n", i.Opcode, i.Summary) if skip, msg := a.skip(i.Opcode); skip { - p.Printf("\t// SKIP: %s\n", msg) + a.Printf("\t// SKIP: %s\n", msg) counts["skip"]++ continue } if i.Opcode[0] == 'J' { label := fmt.Sprintf("rel8_%s", strings.ToLower(i.Opcode)) - p.Printf("%s:\n", label) + a.Printf("%s:\n", label) a.rel8 = label } for _, f := range i.Forms { as := a.args(i.Opcode, f.Operands) if as == nil { - p.Printf("\t// TODO: %s %#v\n", i.Opcode, f.Operands) + a.Printf("\t// TODO: %s %#v\n", i.Opcode, f.Operands) counts["todo"]++ continue } - p.Printf("\t%s\t%s\n", i.Opcode, strings.Join(as, ", ")) + a.Printf("\t%s\t%s\n", i.Opcode, strings.Join(as, ", ")) counts["total"]++ } - p.Printf("\n") + a.Printf("\n") } - p.Printf("\tRET\n") + a.Printf("\tRET\n") for m, c := range counts { - p.Printf("// %s: %d\n", m, c) + a.Printf("// %s: %d\n", m, c) } - return p.Result() + return a.Result() } func (a asmtest) skip(opcode string) (bool, string) { diff --git a/internal/gen/build.go b/internal/gen/build.go index 54ef4cb..50f53f3 100644 --- a/internal/gen/build.go +++ b/internal/gen/build.go @@ -4,7 +4,7 @@ import "github.com/mmcloughlin/avo/internal/inst" type build struct { cfg Config - printer + generator } func NewBuild(cfg Config) Interface { diff --git a/internal/gen/ctors.go b/internal/gen/ctors.go index 52ff844..40182a3 100644 --- a/internal/gen/ctors.go +++ b/internal/gen/ctors.go @@ -4,14 +4,13 @@ import ( "bytes" "fmt" "strings" - "text/tabwriter" "github.com/mmcloughlin/avo/internal/inst" ) type ctors struct { cfg Config - printer + generator } func NewCtors(cfg Config) Interface { @@ -34,59 +33,23 @@ func (c *ctors) Generate(is []inst.Instruction) ([]byte, error) { } func (c *ctors) instruction(i inst.Instruction) { - for _, line := range c.doc(i) { + for _, line := range doc(i) { c.Printf("// %s\n", line) } s := params(i) c.Printf("func %s(%s) (*avo.Instruction, error) {\n", i.Opcode, s.ParameterList()) - c.checkargs(i, s) - c.Printf("\treturn &%s, nil\n", construct(i, s)) + c.forms(i, s) c.Printf("}\n\n") } -// doc generates the lines of the function comment. -func (c *ctors) doc(i inst.Instruction) []string { - lines := []string{ - fmt.Sprintf("%s: %s.", i.Opcode, i.Summary), - "", - "Forms:", - "", - } - - // Write a table of instruction forms. - buf := bytes.NewBuffer(nil) - w := tabwriter.NewWriter(buf, 0, 0, 1, ' ', 0) - for _, f := range i.Forms { - row := i.Opcode + "\t" + strings.Join(f.Signature(), "\t") + "\n" - fmt.Fprint(w, row) - } - w.Flush() - - tbl := strings.TrimSpace(buf.String()) - for _, line := range strings.Split(tbl, "\n") { - lines = append(lines, "\t"+line) - } - - return lines -} - -func construct(i inst.Instruction, s signature) string { - buf := bytes.NewBuffer(nil) - fmt.Fprintf(buf, "avo.Instruction{\n") - fmt.Fprintf(buf, "\tOpcode: %#v,\n", i.Opcode) - fmt.Fprintf(buf, "\tOperands: %s,\n", s.ParameterSlice()) - if i.IsBranch() { - fmt.Fprintf(buf, "\tIsBranch: true,\n") - fmt.Fprintf(buf, "\tIsConditional: %#v,\n", i.IsConditionalBranch()) - } - fmt.Fprintf(buf, "}") - return buf.String() -} - -func (c *ctors) checkargs(i inst.Instruction, s signature) { +func (c *ctors) forms(i inst.Instruction, s signature) { if i.IsNiladic() { + if len(i.Forms) != 1 { + c.AddError(fmt.Errorf("%s breaks assumption that niladic instructions have one form", i.Opcode)) + } + c.Printf("return &%s, nil\n", construct(i, i.Forms[0], s)) return } @@ -106,12 +69,42 @@ func (c *ctors) checkargs(i inst.Instruction, s signature) { } c.Printf("case %s:\n", strings.Join(conds, " && ")) + c.Printf("return &%s, nil\n", construct(i, f, s)) } - c.Printf("default:\n") - c.Printf("return nil, ErrBadOperandTypes\n") - c.Printf("}\n") + c.Printf("return nil, ErrBadOperandTypes\n") +} + +func construct(i inst.Instruction, f inst.Form, s signature) string { + buf := bytes.NewBuffer(nil) + fmt.Fprintf(buf, "avo.Instruction{\n") + fmt.Fprintf(buf, "\tOpcode: %#v,\n", i.Opcode) + fmt.Fprintf(buf, "\tOperands: %s,\n", s.ParameterSlice()) + + // Input output. + // TODO(mbm): handle implicit operands + fmt.Fprintf(buf, "\tInputs: %s,\n", actionfilter(f.Operands, inst.R, s)) + fmt.Fprintf(buf, "\tOutputs: %s,\n", actionfilter(f.Operands, inst.W, s)) + + // Branch variables. + if i.IsBranch() { + fmt.Fprintf(buf, "\tIsBranch: true,\n") + fmt.Fprintf(buf, "\tIsConditional: %#v,\n", i.IsConditionalBranch()) + } + + fmt.Fprintf(buf, "}") + return buf.String() +} + +func actionfilter(ops []inst.Operand, a inst.Action, s signature) string { + opexprs := []string{} + for i, op := range ops { + if op.Action.Contains(a) { + opexprs = append(opexprs, s.ParameterName(i)) + } + } + return fmt.Sprintf("[]%s{%s}", operandType, strings.Join(opexprs, ", ")) } // checkername returns the name of the function that checks an operand of type t. diff --git a/internal/gen/ctorstest.go b/internal/gen/ctorstest.go index e0a35af..9bc653e 100644 --- a/internal/gen/ctorstest.go +++ b/internal/gen/ctorstest.go @@ -8,7 +8,7 @@ import ( type ctorstest struct { cfg Config - printer + generator } func NewCtorsTest(cfg Config) Interface { diff --git a/internal/gen/gen.go b/internal/gen/gen.go index c753522..bcf6b08 100644 --- a/internal/gen/gen.go +++ b/internal/gen/gen.go @@ -50,18 +50,26 @@ func GoFmt(i Interface) Interface { }) } -type printer struct { +type generator struct { buf bytes.Buffer err error } -func (p *printer) Printf(format string, args ...interface{}) { - if p.err != nil { +func (g *generator) Printf(format string, args ...interface{}) { + if g.err != nil { return } - _, p.err = fmt.Fprintf(&p.buf, format, args...) + if _, err := fmt.Fprintf(&g.buf, format, args...); err != nil { + g.AddError(err) + } } -func (p *printer) Result() ([]byte, error) { - return p.buf.Bytes(), p.err +func (g *generator) AddError(err error) { + if err != nil && g.err == nil { + g.err = err + } +} + +func (g *generator) Result() ([]byte, error) { + return g.buf.Bytes(), g.err } diff --git a/internal/gen/godata.go b/internal/gen/godata.go index a05e13e..ba083a8 100644 --- a/internal/gen/godata.go +++ b/internal/gen/godata.go @@ -6,80 +6,78 @@ import ( type godata struct { cfg Config + generator } func NewGoData(cfg Config) Interface { - return GoFmt(godata{cfg: cfg}) + return GoFmt(&godata{cfg: cfg}) } -func (g godata) Generate(is []inst.Instruction) ([]byte, error) { - p := &printer{} +func (g *godata) Generate(is []inst.Instruction) ([]byte, error) { + g.Printf("// %s\n\n", g.cfg.GeneratedWarning()) + g.Printf("package inst\n\n") - p.Printf("// %s\n\n", g.cfg.GeneratedWarning()) - p.Printf("package inst\n\n") - - p.Printf("var Instructions = []Instruction{\n") + g.Printf("var Instructions = []Instruction{\n") for _, i := range is { - p.Printf("{\n") + g.Printf("{\n") - p.Printf("Opcode: %#v,\n", i.Opcode) + g.Printf("Opcode: %#v,\n", i.Opcode) if i.AliasOf != "" { - p.Printf("AliasOf: %#v,\n", i.AliasOf) + g.Printf("AliasOf: %#v,\n", i.AliasOf) } - p.Printf("Summary: %#v,\n", i.Summary) + g.Printf("Summary: %#v,\n", i.Summary) - p.Printf("Forms: []Form{\n") + g.Printf("Forms: []Form{\n") for _, f := range i.Forms { - p.Printf("{\n") + g.Printf("{\n") if f.ISA != nil { - p.Printf("ISA: %#v,\n", f.ISA) + g.Printf("ISA: %#v,\n", f.ISA) } if f.Operands != nil { - p.Printf("Operands: []Operand{\n") + g.Printf("Operands: []Operand{\n") for _, op := range f.Operands { - p.Printf("{Type: %#v, Action: %#v},\n", op.Type, op.Action) + g.Printf("{Type: %#v, Action: %#v},\n", op.Type, op.Action) } - p.Printf("},\n") + g.Printf("},\n") } if f.ImplicitOperands != nil { - p.Printf("ImplicitOperands: []ImplicitOperand{\n") + g.Printf("ImplicitOperands: []ImplicitOperand{\n") for _, op := range f.ImplicitOperands { - p.Printf("{Register: %#v, Action: %#v},\n", op.Register, op.Action) + g.Printf("{Register: %#v, Action: %#v},\n", op.Register, op.Action) } - p.Printf("},\n") + g.Printf("},\n") } - p.Printf("},\n") + g.Printf("},\n") } - p.Printf("},\n") + g.Printf("},\n") - p.Printf("},\n") + g.Printf("},\n") } - p.Printf("}\n") + g.Printf("}\n") - return p.Result() + return g.Result() } type godatatest struct { cfg Config + generator } func NewGoDataTest(cfg Config) Interface { - return GoFmt(godatatest{cfg: cfg}) + return GoFmt(&godatatest{cfg: cfg}) } -func (g godatatest) Generate(is []inst.Instruction) ([]byte, error) { - p := &printer{} +func (g *godatatest) Generate(is []inst.Instruction) ([]byte, error) { + g.Printf("// %s\n\n", g.cfg.GeneratedWarning()) + g.Printf("package inst_test\n\n") - p.Printf("// %s\n\n", g.cfg.GeneratedWarning()) - p.Printf("package inst_test\n\n") - - p.Printf(`import ( + g.Printf(`import ( "reflect" "testing" @@ -87,14 +85,14 @@ func (g godatatest) Generate(is []inst.Instruction) ([]byte, error) { ) `, pkg) - p.Printf("var raw = %#v\n\n", is) + g.Printf("var raw = %#v\n\n", is) - p.Printf(`func TestVerifyInstructionsList(t *testing.T) { + g.Printf(`func TestVerifyInstructionsList(t *testing.T) { if !reflect.DeepEqual(raw, inst.Instructions) { t.Fatal("bad code generation for instructions list") } } `) - return p.Result() + return g.Result() } diff --git a/internal/gen/signature.go b/internal/gen/signature.go index 232c43f..77de874 100644 --- a/internal/gen/signature.go +++ b/internal/gen/signature.go @@ -1,10 +1,12 @@ package gen import ( + "bytes" "fmt" "sort" "strconv" "strings" + "text/tabwriter" "github.com/mmcloughlin/avo/internal/inst" ) @@ -95,3 +97,29 @@ func params(i inst.Instruction) signature { return argslist(ops) } + +// doc generates the lines of the function comment. +func doc(i inst.Instruction) []string { + lines := []string{ + fmt.Sprintf("%s: %s.", i.Opcode, i.Summary), + "", + "Forms:", + "", + } + + // Write a table of instruction forms. + buf := bytes.NewBuffer(nil) + w := tabwriter.NewWriter(buf, 0, 0, 1, ' ', 0) + for _, f := range i.Forms { + row := i.Opcode + "\t" + strings.Join(f.Signature(), "\t") + "\n" + fmt.Fprint(w, row) + } + w.Flush() + + tbl := strings.TrimSpace(buf.String()) + for _, line := range strings.Split(tbl, "\n") { + lines = append(lines, "\t"+line) + } + + return lines +} diff --git a/internal/inst/table_test.go b/internal/inst/table_test.go index a455553..48921c2 100644 --- a/internal/inst/table_test.go +++ b/internal/inst/table_test.go @@ -32,6 +32,26 @@ func TestOpcodeDupes(t *testing.T) { } } +func TestFormDupes(t *testing.T) { + for _, i := range inst.Instructions { + if HasFormDupe(i) { + t.Errorf("%s has duplicate forms", i.Opcode) + } + } +} + +func HasFormDupe(i inst.Instruction) bool { + n := len(i.Forms) + for a := 0; a < n; a++ { + for b := a + 1; b < n; b++ { + if reflect.DeepEqual(i.Forms[a], i.Forms[b]) { + return true + } + } + } + return false +} + func TestInstructionProperties(t *testing.T) { for _, i := range inst.Instructions { if len(i.Opcode) == 0 { @@ -43,6 +63,9 @@ func TestInstructionProperties(t *testing.T) { if len(i.Arities()) == 0 { t.Errorf("instruction %s has empty arities list", i.Opcode) } + if i.IsNiladic() && len(i.Forms) != 1 { + t.Errorf("%s breaks our expectation that niladic functions have one form", i.Opcode) + } } } diff --git a/internal/inst/types.go b/internal/inst/types.go index 628590d..e438e23 100644 --- a/internal/inst/types.go +++ b/internal/inst/types.go @@ -108,12 +108,16 @@ func ActionFromReadWrite(r, w bool) Action { return a } +func (a Action) Contains(s Action) bool { + return (a & s) == s +} + func (a Action) Read() bool { - return (a & R) != 0 + return a.Contains(R) } func (a Action) Write() bool { - return (a & W) != 0 + return a.Contains(W) } func (a Action) String() string { diff --git a/internal/inst/ztable.go b/internal/inst/ztable.go index 656c902..af180a2 100644 --- a/internal/inst/ztable.go +++ b/internal/inst/ztable.go @@ -3527,13 +3527,6 @@ var Instructions = []Instruction{ {Type: "xmm", Action: 0x2}, }, }, - { - ISA: []string{"SSE2"}, - Operands: []Operand{ - {Type: "m64", Action: 0x1}, - {Type: "xmm", Action: 0x2}, - }, - }, }, }, { @@ -4753,16 +4746,6 @@ var Instructions = []Instruction{ {Type: "rel32", Action: 0x0}, }, }, - { - Operands: []Operand{ - {Type: "rel8", Action: 0x0}, - }, - }, - { - Operands: []Operand{ - {Type: "rel32", Action: 0x0}, - }, - }, }, }, { @@ -4780,26 +4763,6 @@ var Instructions = []Instruction{ {Type: "rel32", Action: 0x0}, }, }, - { - Operands: []Operand{ - {Type: "rel8", Action: 0x0}, - }, - }, - { - Operands: []Operand{ - {Type: "rel32", Action: 0x0}, - }, - }, - { - Operands: []Operand{ - {Type: "rel8", Action: 0x0}, - }, - }, - { - Operands: []Operand{ - {Type: "rel32", Action: 0x0}, - }, - }, }, }, { @@ -4817,26 +4780,6 @@ var Instructions = []Instruction{ {Type: "rel32", Action: 0x0}, }, }, - { - Operands: []Operand{ - {Type: "rel8", Action: 0x0}, - }, - }, - { - Operands: []Operand{ - {Type: "rel32", Action: 0x0}, - }, - }, - { - Operands: []Operand{ - {Type: "rel8", Action: 0x0}, - }, - }, - { - Operands: []Operand{ - {Type: "rel32", Action: 0x0}, - }, - }, }, }, { @@ -4854,16 +4797,6 @@ var Instructions = []Instruction{ {Type: "rel32", Action: 0x0}, }, }, - { - Operands: []Operand{ - {Type: "rel8", Action: 0x0}, - }, - }, - { - Operands: []Operand{ - {Type: "rel32", Action: 0x0}, - }, - }, }, }, { @@ -4881,26 +4814,6 @@ var Instructions = []Instruction{ {Type: "rel32", Action: 0x0}, }, }, - { - Operands: []Operand{ - {Type: "rel8", Action: 0x0}, - }, - }, - { - Operands: []Operand{ - {Type: "rel32", Action: 0x0}, - }, - }, - { - Operands: []Operand{ - {Type: "rel8", Action: 0x0}, - }, - }, - { - Operands: []Operand{ - {Type: "rel32", Action: 0x0}, - }, - }, }, }, { @@ -4917,26 +4830,6 @@ var Instructions = []Instruction{ {Type: "rel32", Action: 0x0}, }, }, - { - Operands: []Operand{ - {Type: "rel8", Action: 0x0}, - }, - }, - { - Operands: []Operand{ - {Type: "rel32", Action: 0x0}, - }, - }, - { - Operands: []Operand{ - {Type: "rel8", Action: 0x0}, - }, - }, - { - Operands: []Operand{ - {Type: "rel32", Action: 0x0}, - }, - }, }, }, { @@ -4953,26 +4846,6 @@ var Instructions = []Instruction{ {Type: "rel32", Action: 0x0}, }, }, - { - Operands: []Operand{ - {Type: "rel8", Action: 0x0}, - }, - }, - { - Operands: []Operand{ - {Type: "rel32", Action: 0x0}, - }, - }, - { - Operands: []Operand{ - {Type: "rel8", Action: 0x0}, - }, - }, - { - Operands: []Operand{ - {Type: "rel32", Action: 0x0}, - }, - }, }, }, { @@ -5018,16 +4891,6 @@ var Instructions = []Instruction{ {Type: "rel32", Action: 0x0}, }, }, - { - Operands: []Operand{ - {Type: "rel8", Action: 0x0}, - }, - }, - { - Operands: []Operand{ - {Type: "rel32", Action: 0x0}, - }, - }, }, }, { @@ -5044,16 +4907,6 @@ var Instructions = []Instruction{ {Type: "rel32", Action: 0x0}, }, }, - { - Operands: []Operand{ - {Type: "rel8", Action: 0x0}, - }, - }, - { - Operands: []Operand{ - {Type: "rel32", Action: 0x0}, - }, - }, }, }, { @@ -5071,16 +4924,6 @@ var Instructions = []Instruction{ {Type: "rel32", Action: 0x0}, }, }, - { - Operands: []Operand{ - {Type: "rel8", Action: 0x0}, - }, - }, - { - Operands: []Operand{ - {Type: "rel32", Action: 0x0}, - }, - }, }, }, { @@ -5097,16 +4940,6 @@ var Instructions = []Instruction{ {Type: "rel32", Action: 0x0}, }, }, - { - Operands: []Operand{ - {Type: "rel8", Action: 0x0}, - }, - }, - { - Operands: []Operand{ - {Type: "rel32", Action: 0x0}, - }, - }, }, }, { @@ -5123,16 +4956,6 @@ var Instructions = []Instruction{ {Type: "rel32", Action: 0x0}, }, }, - { - Operands: []Operand{ - {Type: "rel8", Action: 0x0}, - }, - }, - { - Operands: []Operand{ - {Type: "rel32", Action: 0x0}, - }, - }, }, }, { @@ -5149,16 +4972,6 @@ var Instructions = []Instruction{ {Type: "rel32", Action: 0x0}, }, }, - { - Operands: []Operand{ - {Type: "rel8", Action: 0x0}, - }, - }, - { - Operands: []Operand{ - {Type: "rel32", Action: 0x0}, - }, - }, }, }, { @@ -5176,26 +4989,6 @@ var Instructions = []Instruction{ {Type: "rel32", Action: 0x0}, }, }, - { - Operands: []Operand{ - {Type: "rel8", Action: 0x0}, - }, - }, - { - Operands: []Operand{ - {Type: "rel32", Action: 0x0}, - }, - }, - { - Operands: []Operand{ - {Type: "rel8", Action: 0x0}, - }, - }, - { - Operands: []Operand{ - {Type: "rel32", Action: 0x0}, - }, - }, }, }, { @@ -5213,16 +5006,6 @@ var Instructions = []Instruction{ {Type: "rel32", Action: 0x0}, }, }, - { - Operands: []Operand{ - {Type: "rel8", Action: 0x0}, - }, - }, - { - Operands: []Operand{ - {Type: "rel32", Action: 0x0}, - }, - }, }, }, { @@ -5239,16 +5022,6 @@ var Instructions = []Instruction{ {Type: "rel32", Action: 0x0}, }, }, - { - Operands: []Operand{ - {Type: "rel8", Action: 0x0}, - }, - }, - { - Operands: []Operand{ - {Type: "rel32", Action: 0x0}, - }, - }, }, }, { @@ -5266,26 +5039,6 @@ var Instructions = []Instruction{ {Type: "rel32", Action: 0x0}, }, }, - { - Operands: []Operand{ - {Type: "rel8", Action: 0x0}, - }, - }, - { - Operands: []Operand{ - {Type: "rel32", Action: 0x0}, - }, - }, - { - Operands: []Operand{ - {Type: "rel8", Action: 0x0}, - }, - }, - { - Operands: []Operand{ - {Type: "rel32", Action: 0x0}, - }, - }, }, }, { @@ -5302,16 +5055,6 @@ var Instructions = []Instruction{ {Type: "rel32", Action: 0x0}, }, }, - { - Operands: []Operand{ - {Type: "rel8", Action: 0x0}, - }, - }, - { - Operands: []Operand{ - {Type: "rel32", Action: 0x0}, - }, - }, }, }, { @@ -5328,16 +5071,6 @@ var Instructions = []Instruction{ {Type: "rel32", Action: 0x0}, }, }, - { - Operands: []Operand{ - {Type: "rel8", Action: 0x0}, - }, - }, - { - Operands: []Operand{ - {Type: "rel32", Action: 0x0}, - }, - }, }, }, { @@ -5397,16 +5130,6 @@ var Instructions = []Instruction{ {Type: "rel32", Action: 0x0}, }, }, - { - Operands: []Operand{ - {Type: "rel8", Action: 0x0}, - }, - }, - { - Operands: []Operand{ - {Type: "rel32", Action: 0x0}, - }, - }, }, }, { @@ -5424,26 +5147,6 @@ var Instructions = []Instruction{ {Type: "rel32", Action: 0x0}, }, }, - { - Operands: []Operand{ - {Type: "rel8", Action: 0x0}, - }, - }, - { - Operands: []Operand{ - {Type: "rel32", Action: 0x0}, - }, - }, - { - Operands: []Operand{ - {Type: "rel8", Action: 0x0}, - }, - }, - { - Operands: []Operand{ - {Type: "rel32", Action: 0x0}, - }, - }, }, }, { @@ -5461,26 +5164,6 @@ var Instructions = []Instruction{ {Type: "rel32", Action: 0x0}, }, }, - { - Operands: []Operand{ - {Type: "rel8", Action: 0x0}, - }, - }, - { - Operands: []Operand{ - {Type: "rel32", Action: 0x0}, - }, - }, - { - Operands: []Operand{ - {Type: "rel8", Action: 0x0}, - }, - }, - { - Operands: []Operand{ - {Type: "rel32", Action: 0x0}, - }, - }, }, }, { @@ -5498,16 +5181,6 @@ var Instructions = []Instruction{ {Type: "rel32", Action: 0x0}, }, }, - { - Operands: []Operand{ - {Type: "rel8", Action: 0x0}, - }, - }, - { - Operands: []Operand{ - {Type: "rel32", Action: 0x0}, - }, - }, }, }, { @@ -5525,26 +5198,6 @@ var Instructions = []Instruction{ {Type: "rel32", Action: 0x0}, }, }, - { - Operands: []Operand{ - {Type: "rel8", Action: 0x0}, - }, - }, - { - Operands: []Operand{ - {Type: "rel32", Action: 0x0}, - }, - }, - { - Operands: []Operand{ - {Type: "rel8", Action: 0x0}, - }, - }, - { - Operands: []Operand{ - {Type: "rel32", Action: 0x0}, - }, - }, }, }, { @@ -5561,16 +5214,6 @@ var Instructions = []Instruction{ {Type: "rel32", Action: 0x0}, }, }, - { - Operands: []Operand{ - {Type: "rel8", Action: 0x0}, - }, - }, - { - Operands: []Operand{ - {Type: "rel32", Action: 0x0}, - }, - }, }, }, { @@ -5588,16 +5231,6 @@ var Instructions = []Instruction{ {Type: "rel32", Action: 0x0}, }, }, - { - Operands: []Operand{ - {Type: "rel8", Action: 0x0}, - }, - }, - { - Operands: []Operand{ - {Type: "rel32", Action: 0x0}, - }, - }, }, }, { @@ -5615,16 +5248,6 @@ var Instructions = []Instruction{ {Type: "rel32", Action: 0x0}, }, }, - { - Operands: []Operand{ - {Type: "rel8", Action: 0x0}, - }, - }, - { - Operands: []Operand{ - {Type: "rel32", Action: 0x0}, - }, - }, }, }, { @@ -5642,16 +5265,6 @@ var Instructions = []Instruction{ {Type: "rel32", Action: 0x0}, }, }, - { - Operands: []Operand{ - {Type: "rel8", Action: 0x0}, - }, - }, - { - Operands: []Operand{ - {Type: "rel32", Action: 0x0}, - }, - }, }, }, { @@ -5669,16 +5282,6 @@ var Instructions = []Instruction{ {Type: "rel32", Action: 0x0}, }, }, - { - Operands: []Operand{ - {Type: "rel8", Action: 0x0}, - }, - }, - { - Operands: []Operand{ - {Type: "rel32", Action: 0x0}, - }, - }, }, }, { @@ -5713,16 +5316,6 @@ var Instructions = []Instruction{ {Type: "rel32", Action: 0x0}, }, }, - { - Operands: []Operand{ - {Type: "rel8", Action: 0x0}, - }, - }, - { - Operands: []Operand{ - {Type: "rel32", Action: 0x0}, - }, - }, }, }, { @@ -5757,16 +5350,6 @@ var Instructions = []Instruction{ {Type: "rel32", Action: 0x0}, }, }, - { - Operands: []Operand{ - {Type: "rel8", Action: 0x0}, - }, - }, - { - Operands: []Operand{ - {Type: "rel32", Action: 0x0}, - }, - }, }, }, { @@ -5833,16 +5416,6 @@ var Instructions = []Instruction{ {Type: "rel32", Action: 0x0}, }, }, - { - Operands: []Operand{ - {Type: "rel8", Action: 0x0}, - }, - }, - { - Operands: []Operand{ - {Type: "rel32", Action: 0x0}, - }, - }, }, }, { @@ -5859,16 +5432,6 @@ var Instructions = []Instruction{ {Type: "rel32", Action: 0x0}, }, }, - { - Operands: []Operand{ - {Type: "rel8", Action: 0x0}, - }, - }, - { - Operands: []Operand{ - {Type: "rel32", Action: 0x0}, - }, - }, }, }, { @@ -5886,16 +5449,6 @@ var Instructions = []Instruction{ {Type: "rel32", Action: 0x0}, }, }, - { - Operands: []Operand{ - {Type: "rel8", Action: 0x0}, - }, - }, - { - Operands: []Operand{ - {Type: "rel32", Action: 0x0}, - }, - }, }, }, { @@ -5929,16 +5482,6 @@ var Instructions = []Instruction{ {Type: "rel32", Action: 0x0}, }, }, - { - Operands: []Operand{ - {Type: "rel8", Action: 0x0}, - }, - }, - { - Operands: []Operand{ - {Type: "rel32", Action: 0x0}, - }, - }, }, }, { @@ -5955,16 +5498,6 @@ var Instructions = []Instruction{ {Type: "rel32", Action: 0x0}, }, }, - { - Operands: []Operand{ - {Type: "rel8", Action: 0x0}, - }, - }, - { - Operands: []Operand{ - {Type: "rel32", Action: 0x0}, - }, - }, }, }, { @@ -5999,16 +5532,6 @@ var Instructions = []Instruction{ {Type: "rel32", Action: 0x0}, }, }, - { - Operands: []Operand{ - {Type: "rel8", Action: 0x0}, - }, - }, - { - Operands: []Operand{ - {Type: "rel32", Action: 0x0}, - }, - }, }, }, { @@ -12649,26 +12172,6 @@ var Instructions = []Instruction{ {Type: "m8", Action: 0x2}, }, }, - { - Operands: []Operand{ - {Type: "r8", Action: 0x2}, - }, - }, - { - Operands: []Operand{ - {Type: "m8", Action: 0x2}, - }, - }, - { - Operands: []Operand{ - {Type: "r8", Action: 0x2}, - }, - }, - { - Operands: []Operand{ - {Type: "m8", Action: 0x2}, - }, - }, }, }, { @@ -12685,26 +12188,6 @@ var Instructions = []Instruction{ {Type: "m8", Action: 0x2}, }, }, - { - Operands: []Operand{ - {Type: "r8", Action: 0x2}, - }, - }, - { - Operands: []Operand{ - {Type: "m8", Action: 0x2}, - }, - }, - { - Operands: []Operand{ - {Type: "r8", Action: 0x2}, - }, - }, - { - Operands: []Operand{ - {Type: "m8", Action: 0x2}, - }, - }, }, }, { @@ -12721,16 +12204,6 @@ var Instructions = []Instruction{ {Type: "m8", Action: 0x2}, }, }, - { - Operands: []Operand{ - {Type: "r8", Action: 0x2}, - }, - }, - { - Operands: []Operand{ - {Type: "m8", Action: 0x2}, - }, - }, }, }, { @@ -12747,16 +12220,6 @@ var Instructions = []Instruction{ {Type: "m8", Action: 0x2}, }, }, - { - Operands: []Operand{ - {Type: "r8", Action: 0x2}, - }, - }, - { - Operands: []Operand{ - {Type: "m8", Action: 0x2}, - }, - }, }, }, { @@ -12773,16 +12236,6 @@ var Instructions = []Instruction{ {Type: "m8", Action: 0x2}, }, }, - { - Operands: []Operand{ - {Type: "r8", Action: 0x2}, - }, - }, - { - Operands: []Operand{ - {Type: "m8", Action: 0x2}, - }, - }, }, }, { @@ -12799,16 +12252,6 @@ var Instructions = []Instruction{ {Type: "m8", Action: 0x2}, }, }, - { - Operands: []Operand{ - {Type: "r8", Action: 0x2}, - }, - }, - { - Operands: []Operand{ - {Type: "m8", Action: 0x2}, - }, - }, }, }, { @@ -12825,16 +12268,6 @@ var Instructions = []Instruction{ {Type: "m8", Action: 0x2}, }, }, - { - Operands: []Operand{ - {Type: "r8", Action: 0x2}, - }, - }, - { - Operands: []Operand{ - {Type: "m8", Action: 0x2}, - }, - }, }, }, { @@ -12851,16 +12284,6 @@ var Instructions = []Instruction{ {Type: "m8", Action: 0x2}, }, }, - { - Operands: []Operand{ - {Type: "r8", Action: 0x2}, - }, - }, - { - Operands: []Operand{ - {Type: "m8", Action: 0x2}, - }, - }, }, }, { @@ -12877,16 +12300,6 @@ var Instructions = []Instruction{ {Type: "m8", Action: 0x2}, }, }, - { - Operands: []Operand{ - {Type: "r8", Action: 0x2}, - }, - }, - { - Operands: []Operand{ - {Type: "m8", Action: 0x2}, - }, - }, }, }, { @@ -12919,16 +12332,6 @@ var Instructions = []Instruction{ {Type: "m8", Action: 0x2}, }, }, - { - Operands: []Operand{ - {Type: "r8", Action: 0x2}, - }, - }, - { - Operands: []Operand{ - {Type: "m8", Action: 0x2}, - }, - }, }, }, { @@ -12977,16 +12380,6 @@ var Instructions = []Instruction{ {Type: "m8", Action: 0x2}, }, }, - { - Operands: []Operand{ - {Type: "r8", Action: 0x2}, - }, - }, - { - Operands: []Operand{ - {Type: "m8", Action: 0x2}, - }, - }, }, }, { @@ -13019,16 +12412,6 @@ var Instructions = []Instruction{ {Type: "m8", Action: 0x2}, }, }, - { - Operands: []Operand{ - {Type: "r8", Action: 0x2}, - }, - }, - { - Operands: []Operand{ - {Type: "m8", Action: 0x2}, - }, - }, }, }, { @@ -26325,13 +25708,6 @@ var Instructions = []Instruction{ {Register: "ebx", Action: 0x1}, }, }, - { - Operands: []Operand{}, - ImplicitOperands: []ImplicitOperand{ - {Register: "al", Action: 0x3}, - {Register: "rbx", Action: 0x1}, - }, - }, }, }, { diff --git a/internal/inst/ztable_test.go b/internal/inst/ztable_test.go index 7a80472..22e2b4c 100644 --- a/internal/inst/ztable_test.go +++ b/internal/inst/ztable_test.go @@ -9,7 +9,7 @@ import ( "github.com/mmcloughlin/avo/internal/inst" ) -var raw = []inst.Instruction{inst.Instruction{Opcode: "ADCB", AliasOf: "", Summary: "Add with Carry", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "al", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x1}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ADCL", AliasOf: "", Summary: "Add with Carry", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "eax", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ADCQ", AliasOf: "", Summary: "Add with Carry", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "rax", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ADCW", AliasOf: "", Summary: "Add with Carry", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}, inst.Operand{Type: "ax", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ADCXL", AliasOf: "", Summary: "Unsigned Integer Addition of Two Operands with Carry Flag", Forms: []inst.Form{inst.Form{ISA: []string{"ADX"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"ADX"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ADCXQ", AliasOf: "", Summary: "Unsigned Integer Addition of Two Operands with Carry Flag", Forms: []inst.Form{inst.Form{ISA: []string{"ADX"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"ADX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ADDB", AliasOf: "", Summary: "Add", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "al", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x1}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ADDL", AliasOf: "", Summary: "Add", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "eax", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ADDPD", AliasOf: "", Summary: "Add Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ADDPS", AliasOf: "", Summary: "Add Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ADDQ", AliasOf: "", Summary: "Add", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "rax", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ADDSD", AliasOf: "", Summary: "Add Scalar Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ADDSS", AliasOf: "", Summary: "Add Scalar Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ADDSUBPD", AliasOf: "", Summary: "Packed Double-FP Add/Subtract", Forms: []inst.Form{inst.Form{ISA: []string{"SSE3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ADDSUBPS", AliasOf: "", Summary: "Packed Single-FP Add/Subtract", Forms: []inst.Form{inst.Form{ISA: []string{"SSE3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ADDW", AliasOf: "", Summary: "Add", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}, inst.Operand{Type: "ax", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ADOXL", AliasOf: "", Summary: "Unsigned Integer Addition of Two Operands with Overflow Flag", Forms: []inst.Form{inst.Form{ISA: []string{"ADX"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"ADX"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ADOXQ", AliasOf: "", Summary: "Unsigned Integer Addition of Two Operands with Overflow Flag", Forms: []inst.Form{inst.Form{ISA: []string{"ADX"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"ADX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "AESDEC", AliasOf: "", Summary: "Perform One Round of an AES Decryption Flow", Forms: []inst.Form{inst.Form{ISA: []string{"AES"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AES"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "AESDECLAST", AliasOf: "", Summary: "Perform Last Round of an AES Decryption Flow", Forms: []inst.Form{inst.Form{ISA: []string{"AES"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AES"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "AESENC", AliasOf: "", Summary: "Perform One Round of an AES Encryption Flow", Forms: []inst.Form{inst.Form{ISA: []string{"AES"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AES"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "AESENCLAST", AliasOf: "", Summary: "Perform Last Round of an AES Encryption Flow", Forms: []inst.Form{inst.Form{ISA: []string{"AES"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AES"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "AESIMC", AliasOf: "", Summary: "Perform the AES InvMixColumn Transformation", Forms: []inst.Form{inst.Form{ISA: []string{"AES"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AES"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "AESKEYGENASSIST", AliasOf: "", Summary: "AES Round Key Generation Assist", Forms: []inst.Form{inst.Form{ISA: []string{"AES"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AES"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ANDB", AliasOf: "", Summary: "Logical AND", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "al", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x1}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ANDL", AliasOf: "", Summary: "Logical AND", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "eax", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ANDNL", AliasOf: "", Summary: "Logical AND NOT", Forms: []inst.Form{inst.Form{ISA: []string{"BMI"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"BMI"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ANDNPD", AliasOf: "", Summary: "Bitwise Logical AND NOT of Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ANDNPS", AliasOf: "", Summary: "Bitwise Logical AND NOT of Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ANDNQ", AliasOf: "", Summary: "Logical AND NOT", Forms: []inst.Form{inst.Form{ISA: []string{"BMI"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"BMI"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ANDPD", AliasOf: "", Summary: "Bitwise Logical AND of Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ANDPS", AliasOf: "", Summary: "Bitwise Logical AND of Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ANDQ", AliasOf: "", Summary: "Logical AND", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "rax", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ANDW", AliasOf: "", Summary: "Logical AND", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}, inst.Operand{Type: "ax", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BEXTRL", AliasOf: "", Summary: "Bit Field Extract", Forms: []inst.Form{inst.Form{ISA: []string{"BMI"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"BMI"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BEXTRQ", AliasOf: "", Summary: "Bit Field Extract", Forms: []inst.Form{inst.Form{ISA: []string{"BMI"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"BMI"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BLENDPD", AliasOf: "", Summary: "Blend Packed Double Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BLENDPS", AliasOf: "", Summary: " Blend Packed Single Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BLENDVPD", AliasOf: "", Summary: " Variable Blend Packed Double Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm0", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm0", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BLENDVPS", AliasOf: "", Summary: " Variable Blend Packed Single Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm0", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm0", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BLSIL", AliasOf: "", Summary: "Isolate Lowest Set Bit", Forms: []inst.Form{inst.Form{ISA: []string{"BMI"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"BMI"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BLSIQ", AliasOf: "", Summary: "Isolate Lowest Set Bit", Forms: []inst.Form{inst.Form{ISA: []string{"BMI"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"BMI"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BLSMSKL", AliasOf: "", Summary: "Mask From Lowest Set Bit", Forms: []inst.Form{inst.Form{ISA: []string{"BMI"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"BMI"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BLSMSKQ", AliasOf: "", Summary: "Mask From Lowest Set Bit", Forms: []inst.Form{inst.Form{ISA: []string{"BMI"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"BMI"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BLSRL", AliasOf: "", Summary: "Reset Lowest Set Bit", Forms: []inst.Form{inst.Form{ISA: []string{"BMI"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"BMI"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BLSRQ", AliasOf: "", Summary: "Reset Lowest Set Bit", Forms: []inst.Form{inst.Form{ISA: []string{"BMI"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"BMI"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BSFL", AliasOf: "", Summary: "Bit Scan Forward", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BSFQ", AliasOf: "", Summary: "Bit Scan Forward", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BSFW", AliasOf: "", Summary: "Bit Scan Forward", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BSRL", AliasOf: "", Summary: "Bit Scan Reverse", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BSRQ", AliasOf: "", Summary: "Bit Scan Reverse", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BSRW", AliasOf: "", Summary: "Bit Scan Reverse", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BSWAPL", AliasOf: "", Summary: "Byte Swap", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BSWAPQ", AliasOf: "", Summary: "Byte Swap", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BTCL", AliasOf: "", Summary: "Bit Test and Complement", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BTCQ", AliasOf: "", Summary: "Bit Test and Complement", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BTCW", AliasOf: "", Summary: "Bit Test and Complement", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BTL", AliasOf: "", Summary: "Bit Test", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BTQ", AliasOf: "", Summary: "Bit Test", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BTRL", AliasOf: "", Summary: "Bit Test and Reset", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BTRQ", AliasOf: "", Summary: "Bit Test and Reset", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BTRW", AliasOf: "", Summary: "Bit Test and Reset", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BTSL", AliasOf: "", Summary: "Bit Test and Set", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BTSQ", AliasOf: "", Summary: "Bit Test and Set", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BTSW", AliasOf: "", Summary: "Bit Test and Set", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BTW", AliasOf: "", Summary: "Bit Test", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "m16", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BZHIL", AliasOf: "", Summary: "Zero High Bits Starting with Specified Bit Position", Forms: []inst.Form{inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BZHIQ", AliasOf: "", Summary: "Zero High Bits Starting with Specified Bit Position", Forms: []inst.Form{inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CALL", AliasOf: "", Summary: "Call Procedure", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CBW", AliasOf: "", Summary: "Convert Byte to Word", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "ax", Action: 0x2}, inst.ImplicitOperand{Register: "al", Action: 0x1}}}}}, inst.Instruction{Opcode: "CDQ", AliasOf: "", Summary: "Convert Doubleword to Quadword", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "eax", Action: 0x1}, inst.ImplicitOperand{Register: "edx", Action: 0x2}}}}}, inst.Instruction{Opcode: "CDQE", AliasOf: "", Summary: "Convert Doubleword to Quadword", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "eax", Action: 0x1}, inst.ImplicitOperand{Register: "rax", Action: 0x2}}}}}, inst.Instruction{Opcode: "CLC", AliasOf: "", Summary: "Clear Carry Flag", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CLD", AliasOf: "", Summary: "Clear Direction Flag", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CLFLUSH", AliasOf: "", Summary: "Flush Cache Line", Forms: []inst.Form{inst.Form{ISA: []string{"CLFLUSH"}, Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CLFLUSHOPT", AliasOf: "", Summary: "Flush Cache Line Optimized", Forms: []inst.Form{inst.Form{ISA: []string{"CLFLUSHOPT"}, Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMC", AliasOf: "", Summary: "Complement Carry Flag", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVLCC", AliasOf: "", Summary: "Move if above or equal (CF == 0)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVLCS", AliasOf: "", Summary: "Move if below (CF == 1)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVLEQ", AliasOf: "", Summary: "Move if equal (ZF == 1)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVLGE", AliasOf: "", Summary: "Move if greater or equal (SF == OF)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVLGT", AliasOf: "", Summary: "Move if greater (ZF == 0 and SF == OF)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVLHI", AliasOf: "", Summary: "Move if above (CF == 0 and ZF == 0)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVLLE", AliasOf: "", Summary: "Move if less or equal (ZF == 1 or SF != OF)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVLLS", AliasOf: "", Summary: "Move if below or equal (CF == 1 or ZF == 1)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVLLT", AliasOf: "", Summary: "Move if less (SF != OF)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVLMI", AliasOf: "", Summary: "Move if sign (SF == 1)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVLNE", AliasOf: "", Summary: "Move if not equal (ZF == 0)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVLOC", AliasOf: "", Summary: "Move if not overflow (OF == 0)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVLOS", AliasOf: "", Summary: "Move if overflow (OF == 1)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVLPC", AliasOf: "", Summary: "Move if not parity (PF == 0)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVLPL", AliasOf: "", Summary: "Move if not sign (SF == 0)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVLPS", AliasOf: "", Summary: "Move if parity (PF == 1)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVQCC", AliasOf: "", Summary: "Move if above or equal (CF == 0)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVQCS", AliasOf: "", Summary: "Move if below (CF == 1)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVQEQ", AliasOf: "", Summary: "Move if equal (ZF == 1)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVQGE", AliasOf: "", Summary: "Move if greater or equal (SF == OF)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVQGT", AliasOf: "", Summary: "Move if greater (ZF == 0 and SF == OF)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVQHI", AliasOf: "", Summary: "Move if above (CF == 0 and ZF == 0)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVQLE", AliasOf: "", Summary: "Move if less or equal (ZF == 1 or SF != OF)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVQLS", AliasOf: "", Summary: "Move if below or equal (CF == 1 or ZF == 1)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVQLT", AliasOf: "", Summary: "Move if less (SF != OF)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVQMI", AliasOf: "", Summary: "Move if sign (SF == 1)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVQNE", AliasOf: "", Summary: "Move if not equal (ZF == 0)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVQOC", AliasOf: "", Summary: "Move if not overflow (OF == 0)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVQOS", AliasOf: "", Summary: "Move if overflow (OF == 1)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVQPC", AliasOf: "", Summary: "Move if not parity (PF == 0)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVQPL", AliasOf: "", Summary: "Move if not sign (SF == 0)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVQPS", AliasOf: "", Summary: "Move if parity (PF == 1)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVWCC", AliasOf: "", Summary: "Move if above or equal (CF == 0)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVWCS", AliasOf: "", Summary: "Move if below (CF == 1)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVWEQ", AliasOf: "", Summary: "Move if equal (ZF == 1)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVWGE", AliasOf: "", Summary: "Move if greater or equal (SF == OF)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVWGT", AliasOf: "", Summary: "Move if greater (ZF == 0 and SF == OF)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVWHI", AliasOf: "", Summary: "Move if above (CF == 0 and ZF == 0)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVWLE", AliasOf: "", Summary: "Move if less or equal (ZF == 1 or SF != OF)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVWLS", AliasOf: "", Summary: "Move if below or equal (CF == 1 or ZF == 1)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVWLT", AliasOf: "", Summary: "Move if less (SF != OF)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVWMI", AliasOf: "", Summary: "Move if sign (SF == 1)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVWNE", AliasOf: "", Summary: "Move if not equal (ZF == 0)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVWOC", AliasOf: "", Summary: "Move if not overflow (OF == 0)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVWOS", AliasOf: "", Summary: "Move if overflow (OF == 1)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVWPC", AliasOf: "", Summary: "Move if not parity (PF == 0)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVWPL", AliasOf: "", Summary: "Move if not sign (SF == 0)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVWPS", AliasOf: "", Summary: "Move if parity (PF == 1)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMPB", AliasOf: "", Summary: "Compare Two Operands", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "al", Action: 0x1}, inst.Operand{Type: "imm8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "imm8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "r8", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "m8", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x1}, inst.Operand{Type: "imm8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x1}, inst.Operand{Type: "r8", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMPL", AliasOf: "", Summary: "Compare Two Operands", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "eax", Action: 0x1}, inst.Operand{Type: "imm32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "imm8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "imm32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "imm8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "imm32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMPPD", AliasOf: "", Summary: "Compare Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}, inst.Operand{Type: "imm8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}, inst.Operand{Type: "imm8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMPPS", AliasOf: "", Summary: "Compare Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}, inst.Operand{Type: "imm8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}, inst.Operand{Type: "imm8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMPQ", AliasOf: "", Summary: "Compare Two Operands", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rax", Action: 0x1}, inst.Operand{Type: "imm32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "imm8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "imm32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "imm8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "imm32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMPSD", AliasOf: "", Summary: "Compare Scalar Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}, inst.Operand{Type: "imm8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}, inst.Operand{Type: "imm8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMPSS", AliasOf: "", Summary: "Compare Scalar Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}, inst.Operand{Type: "imm8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}, inst.Operand{Type: "imm8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMPW", AliasOf: "", Summary: "Compare Two Operands", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "ax", Action: 0x1}, inst.Operand{Type: "imm16", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "imm8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "imm16", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "m16", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "imm8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "imm16", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMPXCHG16B", AliasOf: "", Summary: "Compare and Exchange 16 Bytes", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "rax", Action: 0x3}, inst.ImplicitOperand{Register: "rbx", Action: 0x1}, inst.ImplicitOperand{Register: "rcx", Action: 0x1}, inst.ImplicitOperand{Register: "rdx", Action: 0x3}}}}}, inst.Instruction{Opcode: "CMPXCHG8B", AliasOf: "", Summary: "Compare and Exchange 8 Bytes", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "eax", Action: 0x3}, inst.ImplicitOperand{Register: "ebx", Action: 0x1}, inst.ImplicitOperand{Register: "ecx", Action: 0x1}, inst.ImplicitOperand{Register: "edx", Action: 0x3}}}}}, inst.Instruction{Opcode: "CMPXCHGB", AliasOf: "", Summary: "Compare and Exchange", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMPXCHGL", AliasOf: "", Summary: "Compare and Exchange", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMPXCHGQ", AliasOf: "", Summary: "Compare and Exchange", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMPXCHGW", AliasOf: "", Summary: "Compare and Exchange", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "COMISD", AliasOf: "", Summary: "Compare Scalar Ordered Double-Precision Floating-Point Values and Set EFLAGS", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "COMISS", AliasOf: "", Summary: "Compare Scalar Ordered Single-Precision Floating-Point Values and Set EFLAGS", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CPUID", AliasOf: "", Summary: "CPU Identification", Forms: []inst.Form{inst.Form{ISA: []string{"CPUID"}, Operands: []inst.Operand{}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "eax", Action: 0x3}, inst.ImplicitOperand{Register: "ebx", Action: 0x2}, inst.ImplicitOperand{Register: "ecx", Action: 0x3}, inst.ImplicitOperand{Register: "edx", Action: 0x2}}}}}, inst.Instruction{Opcode: "CQO", AliasOf: "", Summary: "Convert Quadword to Octaword", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "rax", Action: 0x1}, inst.ImplicitOperand{Register: "rdx", Action: 0x2}}}}}, inst.Instruction{Opcode: "CRC32B", AliasOf: "", Summary: "Accumulate CRC32 Value", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.2"}, Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.2"}, Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.2"}, Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.2"}, Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CRC32L", AliasOf: "", Summary: "Accumulate CRC32 Value", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.2"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.2"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CRC32Q", AliasOf: "", Summary: "Accumulate CRC32 Value", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.2"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CRC32W", AliasOf: "", Summary: "Accumulate CRC32 Value", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.2"}, Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.2"}, Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CVTPD2PL", AliasOf: "", Summary: "Convert Packed Double-Precision FP Values to Packed Dword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CVTPD2PS", AliasOf: "", Summary: "Convert Packed Double-Precision FP Values to Packed Single-Precision FP Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CVTPL2PD", AliasOf: "", Summary: "Convert Packed Dword Integers to Packed Double-Precision FP Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CVTPL2PS", AliasOf: "", Summary: "Convert Packed Dword Integers to Packed Single-Precision FP Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CVTPS2PD", AliasOf: "", Summary: "Convert Packed Single-Precision FP Values to Packed Double-Precision FP Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CVTPS2PL", AliasOf: "", Summary: "Convert Packed Single-Precision FP Values to Packed Dword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CVTSD2SL", AliasOf: "", Summary: "Convert Scalar Double-Precision FP Value to Integer", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CVTSD2SS", AliasOf: "", Summary: "Convert Scalar Double-Precision FP Value to Scalar Single-Precision FP Value", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CVTSL2SD", AliasOf: "", Summary: "Convert Dword Integer to Scalar Double-Precision FP Value", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CVTSL2SS", AliasOf: "", Summary: "Convert Dword Integer to Scalar Single-Precision FP Value", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CVTSQ2SD", AliasOf: "", Summary: "Convert Dword Integer to Scalar Double-Precision FP Value", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CVTSQ2SS", AliasOf: "", Summary: "Convert Dword Integer to Scalar Single-Precision FP Value", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CVTSS2SD", AliasOf: "", Summary: "Convert Scalar Single-Precision FP Value to Scalar Double-Precision FP Value", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CVTSS2SL", AliasOf: "", Summary: "Convert Scalar Single-Precision FP Value to Dword Integer", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CVTTPD2PL", AliasOf: "", Summary: "Convert with Truncation Packed Double-Precision FP Values to Packed Dword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CVTTPS2PL", AliasOf: "", Summary: "Convert with Truncation Packed Single-Precision FP Values to Packed Dword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CVTTSD2SL", AliasOf: "", Summary: "Convert with Truncation Scalar Double-Precision FP Value to Signed Integer", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CVTTSD2SQ", AliasOf: "", Summary: "Convert with Truncation Scalar Double-Precision FP Value to Signed Integer", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CVTTSS2SL", AliasOf: "", Summary: "Convert with Truncation Scalar Single-Precision FP Value to Dword Integer", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CWD", AliasOf: "", Summary: "Convert Word to Doubleword", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "ax", Action: 0x1}, inst.ImplicitOperand{Register: "dx", Action: 0x2}}}}}, inst.Instruction{Opcode: "CWDE", AliasOf: "", Summary: "Convert Word to Doubleword", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "ax", Action: 0x1}, inst.ImplicitOperand{Register: "eax", Action: 0x2}}}}}, inst.Instruction{Opcode: "DECB", AliasOf: "", Summary: "Decrement by 1", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "DECL", AliasOf: "", Summary: "Decrement by 1", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "DECQ", AliasOf: "", Summary: "Decrement by 1", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "DECW", AliasOf: "", Summary: "Decrement by 1", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "DIVB", AliasOf: "", Summary: "Unsigned Divide", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "ax", Action: 0x3}}}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "ax", Action: 0x3}}}}}, inst.Instruction{Opcode: "DIVL", AliasOf: "", Summary: "Unsigned Divide", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "eax", Action: 0x3}, inst.ImplicitOperand{Register: "edx", Action: 0x3}}}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "eax", Action: 0x3}, inst.ImplicitOperand{Register: "edx", Action: 0x3}}}}}, inst.Instruction{Opcode: "DIVPD", AliasOf: "", Summary: "Divide Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "DIVPS", AliasOf: "", Summary: "Divide Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "DIVQ", AliasOf: "", Summary: "Unsigned Divide", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "rax", Action: 0x3}, inst.ImplicitOperand{Register: "rdx", Action: 0x3}}}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "rax", Action: 0x3}, inst.ImplicitOperand{Register: "rdx", Action: 0x3}}}}}, inst.Instruction{Opcode: "DIVSD", AliasOf: "", Summary: "Divide Scalar Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "DIVSS", AliasOf: "", Summary: "Divide Scalar Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "DIVW", AliasOf: "", Summary: "Unsigned Divide", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "ax", Action: 0x3}, inst.ImplicitOperand{Register: "dx", Action: 0x3}}}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "ax", Action: 0x3}, inst.ImplicitOperand{Register: "dx", Action: 0x3}}}}}, inst.Instruction{Opcode: "DPPD", AliasOf: "", Summary: "Dot Product of Packed Double Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "DPPS", AliasOf: "", Summary: "Dot Product of Packed Single Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "EXTRACTPS", AliasOf: "", Summary: "Extract Packed Single Precision Floating-Point Value", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm2u", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm2u", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "HADDPD", AliasOf: "", Summary: "Packed Double-FP Horizontal Add", Forms: []inst.Form{inst.Form{ISA: []string{"SSE3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "HADDPS", AliasOf: "", Summary: "Packed Single-FP Horizontal Add", Forms: []inst.Form{inst.Form{ISA: []string{"SSE3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "HSUBPD", AliasOf: "", Summary: "Packed Double-FP Horizontal Subtract", Forms: []inst.Form{inst.Form{ISA: []string{"SSE3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "HSUBPS", AliasOf: "", Summary: "Packed Single-FP Horizontal Subtract", Forms: []inst.Form{inst.Form{ISA: []string{"SSE3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "IDIVB", AliasOf: "", Summary: "Signed Divide", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "ax", Action: 0x3}}}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "ax", Action: 0x3}}}}}, inst.Instruction{Opcode: "IDIVL", AliasOf: "", Summary: "Signed Divide", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "eax", Action: 0x3}, inst.ImplicitOperand{Register: "edx", Action: 0x3}}}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "eax", Action: 0x3}, inst.ImplicitOperand{Register: "edx", Action: 0x3}}}}}, inst.Instruction{Opcode: "IDIVQ", AliasOf: "", Summary: "Signed Divide", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "rax", Action: 0x3}, inst.ImplicitOperand{Register: "rdx", Action: 0x3}}}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "rax", Action: 0x3}, inst.ImplicitOperand{Register: "rdx", Action: 0x3}}}}}, inst.Instruction{Opcode: "IDIVW", AliasOf: "", Summary: "Signed Divide", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "ax", Action: 0x3}, inst.ImplicitOperand{Register: "dx", Action: 0x3}}}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "ax", Action: 0x3}, inst.ImplicitOperand{Register: "dx", Action: 0x3}}}}}, inst.Instruction{Opcode: "IMUL3L", AliasOf: "", Summary: "Signed Multiply", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "IMUL3Q", AliasOf: "", Summary: "Signed Multiply", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "IMUL3W", AliasOf: "", Summary: "Signed Multiply", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "IMULB", AliasOf: "", Summary: "Signed Multiply", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "ax", Action: 0x2}, inst.ImplicitOperand{Register: "al", Action: 0x1}}}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "ax", Action: 0x2}, inst.ImplicitOperand{Register: "al", Action: 0x1}}}}}, inst.Instruction{Opcode: "IMULL", AliasOf: "", Summary: "Signed Multiply", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "eax", Action: 0x3}, inst.ImplicitOperand{Register: "edx", Action: 0x2}}}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "eax", Action: 0x3}, inst.ImplicitOperand{Register: "edx", Action: 0x2}}}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "IMULQ", AliasOf: "", Summary: "Signed Multiply", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "rax", Action: 0x3}, inst.ImplicitOperand{Register: "rdx", Action: 0x2}}}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "rax", Action: 0x3}, inst.ImplicitOperand{Register: "rdx", Action: 0x2}}}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "IMULW", AliasOf: "", Summary: "Signed Multiply", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "ax", Action: 0x3}, inst.ImplicitOperand{Register: "dx", Action: 0x2}}}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "ax", Action: 0x3}, inst.ImplicitOperand{Register: "dx", Action: 0x2}}}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "INCB", AliasOf: "", Summary: "Increment by 1", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "INCL", AliasOf: "", Summary: "Increment by 1", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "INCQ", AliasOf: "", Summary: "Increment by 1", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "INCW", AliasOf: "", Summary: "Increment by 1", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "INSERTPS", AliasOf: "", Summary: "Insert Packed Single Precision Floating-Point Value", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "INT", AliasOf: "", Summary: "Call to Interrupt Procedure", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "3", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JA", AliasOf: "JHI", Summary: "Jump if above (CF == 0 and ZF == 0)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JAE", AliasOf: "JCC", Summary: "Jump if above or equal (CF == 0)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JB", AliasOf: "JCS", Summary: "Jump if below (CF == 1)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JBE", AliasOf: "JLS", Summary: "Jump if below or equal (CF == 1 or ZF == 1)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JC", AliasOf: "JCS", Summary: "Jump if below (CF == 1)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JCC", AliasOf: "", Summary: "Jump if above or equal (CF == 0)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JCS", AliasOf: "", Summary: "Jump if below (CF == 1)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JCXZL", AliasOf: "", Summary: "Jump if ECX register is 0", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "ecx", Action: 0x1}}}}}, inst.Instruction{Opcode: "JCXZQ", AliasOf: "", Summary: "Jump if RCX register is 0", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "rcx", Action: 0x1}}}}}, inst.Instruction{Opcode: "JE", AliasOf: "JEQ", Summary: "Jump if equal (ZF == 1)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JEQ", AliasOf: "", Summary: "Jump if equal (ZF == 1)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JG", AliasOf: "JGT", Summary: "Jump if greater (ZF == 0 and SF == OF)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JGE", AliasOf: "", Summary: "Jump if greater or equal (SF == OF)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JGT", AliasOf: "", Summary: "Jump if greater (ZF == 0 and SF == OF)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JHI", AliasOf: "", Summary: "Jump if above (CF == 0 and ZF == 0)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JHS", AliasOf: "JCC", Summary: "Jump if above or equal (CF == 0)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JL", AliasOf: "JLT", Summary: "Jump if less (SF != OF)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JLE", AliasOf: "", Summary: "Jump if less or equal (ZF == 1 or SF != OF)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JLO", AliasOf: "JCS", Summary: "Jump if below (CF == 1)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JLS", AliasOf: "", Summary: "Jump if below or equal (CF == 1 or ZF == 1)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JLT", AliasOf: "", Summary: "Jump if less (SF != OF)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JMI", AliasOf: "", Summary: "Jump if sign (SF == 1)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JMP", AliasOf: "", Summary: "Jump Unconditionally", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JNA", AliasOf: "JLS", Summary: "Jump if below or equal (CF == 1 or ZF == 1)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JNAE", AliasOf: "JCS", Summary: "Jump if below (CF == 1)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JNB", AliasOf: "JCC", Summary: "Jump if above or equal (CF == 0)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JNBE", AliasOf: "JHI", Summary: "Jump if above (CF == 0 and ZF == 0)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JNC", AliasOf: "JCC", Summary: "Jump if above or equal (CF == 0)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JNE", AliasOf: "", Summary: "Jump if not equal (ZF == 0)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JNG", AliasOf: "JLE", Summary: "Jump if less or equal (ZF == 1 or SF != OF)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JNGE", AliasOf: "JLT", Summary: "Jump if less (SF != OF)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JNL", AliasOf: "JGE", Summary: "Jump if greater or equal (SF == OF)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JNLE", AliasOf: "JGT", Summary: "Jump if greater (ZF == 0 and SF == OF)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JNO", AliasOf: "JOC", Summary: "Jump if not overflow (OF == 0)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JNP", AliasOf: "JPC", Summary: "Jump if not parity (PF == 0)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JNS", AliasOf: "JPL", Summary: "Jump if not sign (SF == 0)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JNZ", AliasOf: "JNE", Summary: "Jump if not equal (ZF == 0)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JO", AliasOf: "JOS", Summary: "Jump if overflow (OF == 1)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JOC", AliasOf: "", Summary: "Jump if not overflow (OF == 0)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JOS", AliasOf: "", Summary: "Jump if overflow (OF == 1)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JP", AliasOf: "JPS", Summary: "Jump if parity (PF == 1)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JPC", AliasOf: "", Summary: "Jump if not parity (PF == 0)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JPE", AliasOf: "JPS", Summary: "Jump if parity (PF == 1)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JPL", AliasOf: "", Summary: "Jump if not sign (SF == 0)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JPO", AliasOf: "JPC", Summary: "Jump if not parity (PF == 0)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JPS", AliasOf: "", Summary: "Jump if parity (PF == 1)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JS", AliasOf: "JMI", Summary: "Jump if sign (SF == 1)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JZ", AliasOf: "JEQ", Summary: "Jump if equal (ZF == 1)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "LDDQU", AliasOf: "", Summary: "Load Unaligned Integer 128 Bits", Forms: []inst.Form{inst.Form{ISA: []string{"SSE3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "LDMXCSR", AliasOf: "", Summary: "Load MXCSR Register", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "LEAL", AliasOf: "", Summary: "Load Effective Address", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "LEAQ", AliasOf: "", Summary: "Load Effective Address", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "LEAW", AliasOf: "", Summary: "Load Effective Address", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "LFENCE", AliasOf: "", Summary: "Load Fence", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "LZCNTL", AliasOf: "", Summary: "Count the Number of Leading Zero Bits", Forms: []inst.Form{inst.Form{ISA: []string{"LZCNT"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"LZCNT"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "LZCNTQ", AliasOf: "", Summary: "Count the Number of Leading Zero Bits", Forms: []inst.Form{inst.Form{ISA: []string{"LZCNT"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"LZCNT"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "LZCNTW", AliasOf: "", Summary: "Count the Number of Leading Zero Bits", Forms: []inst.Form{inst.Form{ISA: []string{"LZCNT"}, Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"LZCNT"}, Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MASKMOVDQU", AliasOf: "MASKMOVOU", Summary: "Store Selected Bytes of Double Quadword", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "rdi", Action: 0x1}}}}}, inst.Instruction{Opcode: "MASKMOVOU", AliasOf: "", Summary: "Store Selected Bytes of Double Quadword", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "rdi", Action: 0x1}}}}}, inst.Instruction{Opcode: "MAXPD", AliasOf: "", Summary: "Return Maximum Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MAXPS", AliasOf: "", Summary: "Return Maximum Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MAXSD", AliasOf: "", Summary: "Return Maximum Scalar Double-Precision Floating-Point Value", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MAXSS", AliasOf: "", Summary: "Return Maximum Scalar Single-Precision Floating-Point Value", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MFENCE", AliasOf: "", Summary: "Memory Fence", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MINPD", AliasOf: "", Summary: "Return Minimum Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MINPS", AliasOf: "", Summary: "Return Minimum Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MINSD", AliasOf: "", Summary: "Return Minimum Scalar Double-Precision Floating-Point Value", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MINSS", AliasOf: "", Summary: "Return Minimum Scalar Single-Precision Floating-Point Value", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MONITOR", AliasOf: "", Summary: "Monitor a Linear Address Range", Forms: []inst.Form{inst.Form{ISA: []string{"MONITOR"}, Operands: []inst.Operand{}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "rax", Action: 0x1}, inst.ImplicitOperand{Register: "ecx", Action: 0x1}, inst.ImplicitOperand{Register: "edx", Action: 0x1}}}}}, inst.Instruction{Opcode: "MOVAPD", AliasOf: "", Summary: "Move Aligned Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVAPS", AliasOf: "", Summary: "Move Aligned Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVB", AliasOf: "", Summary: "Move", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "r8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x1}, inst.Operand{Type: "r8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "m8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVBELL", AliasOf: "", Summary: "Move Data After Swapping Bytes", Forms: []inst.Form{inst.Form{ISA: []string{"MOVBE"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"MOVBE"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVBEQQ", AliasOf: "", Summary: "Move Data After Swapping Bytes", Forms: []inst.Form{inst.Form{ISA: []string{"MOVBE"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"MOVBE"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVBEWW", AliasOf: "", Summary: "Move Data After Swapping Bytes", Forms: []inst.Form{inst.Form{ISA: []string{"MOVBE"}, Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"MOVBE"}, Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "m16", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVBLSX", AliasOf: "", Summary: "Move with Sign-Extension", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVBLZX", AliasOf: "", Summary: "Move with Zero-Extend", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVBQSX", AliasOf: "", Summary: "Move with Sign-Extension", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVBQZX", AliasOf: "", Summary: "Move with Zero-Extend", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVBWSX", AliasOf: "", Summary: "Move with Sign-Extension", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVBWZX", AliasOf: "", Summary: "Move with Zero-Extend", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVD", AliasOf: "MOVQ", Summary: "Move", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm64", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVDDUP", AliasOf: "", Summary: "Move One Double-FP and Duplicate", Forms: []inst.Form{inst.Form{ISA: []string{"SSE3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE3"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVDQ2Q", AliasOf: "MOVQ", Summary: "Move", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm64", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVHLPS", AliasOf: "", Summary: "Move Packed Single-Precision Floating-Point Values High to Low", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVHPD", AliasOf: "", Summary: "Move High Packed Double-Precision Floating-Point Value", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVHPS", AliasOf: "", Summary: "Move High Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVL", AliasOf: "", Summary: "Move", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVLHPS", AliasOf: "", Summary: "Move Packed Single-Precision Floating-Point Values Low to High", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVLPD", AliasOf: "", Summary: "Move Low Packed Double-Precision Floating-Point Value", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVLPS", AliasOf: "", Summary: "Move Low Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVLQSX", AliasOf: "", Summary: "Move Doubleword to Quadword with Sign-Extension", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVLQZX", AliasOf: "", Summary: "Move with Zero-Extend", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVMSKPD", AliasOf: "", Summary: "Extract Packed Double-Precision Floating-Point Sign Mask", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVMSKPS", AliasOf: "", Summary: "Extract Packed Single-Precision Floating-Point Sign Mask", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVNTDQ", AliasOf: "MOVNTO", Summary: "Store Double Quadword Using Non-Temporal Hint", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVNTDQA", AliasOf: "", Summary: "Load Double Quadword Non-Temporal Aligned Hint", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVNTIL", AliasOf: "", Summary: "Store Doubleword Using Non-Temporal Hint", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVNTIQ", AliasOf: "", Summary: "Store Doubleword Using Non-Temporal Hint", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVNTO", AliasOf: "", Summary: "Store Double Quadword Using Non-Temporal Hint", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVNTPD", AliasOf: "", Summary: "Store Packed Double-Precision Floating-Point Values Using Non-Temporal Hint", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVNTPS", AliasOf: "", Summary: "Store Packed Single-Precision Floating-Point Values Using Non-Temporal Hint", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVO", AliasOf: "", Summary: "Move Aligned Double Quadword", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVOA", AliasOf: "MOVO", Summary: "Move Aligned Double Quadword", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVOU", AliasOf: "", Summary: "Move Unaligned Double Quadword", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVQ", AliasOf: "", Summary: "Move", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm64", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVSD", AliasOf: "", Summary: "Move Scalar Double-Precision Floating-Point Value", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVSHDUP", AliasOf: "", Summary: "Move Packed Single-FP High and Duplicate", Forms: []inst.Form{inst.Form{ISA: []string{"SSE3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVSLDUP", AliasOf: "", Summary: "Move Packed Single-FP Low and Duplicate", Forms: []inst.Form{inst.Form{ISA: []string{"SSE3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVSS", AliasOf: "", Summary: "Move Scalar Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVUPD", AliasOf: "", Summary: "Move Unaligned Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVUPS", AliasOf: "", Summary: "Move Unaligned Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVW", AliasOf: "", Summary: "Move", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "m16", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVWLSX", AliasOf: "", Summary: "Move with Sign-Extension", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVWLZX", AliasOf: "", Summary: "Move with Zero-Extend", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVWQSX", AliasOf: "", Summary: "Move with Sign-Extension", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVWQZX", AliasOf: "", Summary: "Move with Zero-Extend", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MPSADBW", AliasOf: "", Summary: "Compute Multiple Packed Sums of Absolute Difference", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MULB", AliasOf: "", Summary: "Unsigned Multiply", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "ax", Action: 0x2}, inst.ImplicitOperand{Register: "al", Action: 0x1}}}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "ax", Action: 0x2}, inst.ImplicitOperand{Register: "al", Action: 0x1}}}}}, inst.Instruction{Opcode: "MULL", AliasOf: "", Summary: "Unsigned Multiply", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "eax", Action: 0x3}, inst.ImplicitOperand{Register: "edx", Action: 0x2}}}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "eax", Action: 0x3}, inst.ImplicitOperand{Register: "edx", Action: 0x2}}}}}, inst.Instruction{Opcode: "MULPD", AliasOf: "", Summary: "Multiply Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MULPS", AliasOf: "", Summary: "Multiply Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MULQ", AliasOf: "", Summary: "Unsigned Multiply", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "rax", Action: 0x3}, inst.ImplicitOperand{Register: "rdx", Action: 0x2}}}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "rax", Action: 0x3}, inst.ImplicitOperand{Register: "rdx", Action: 0x2}}}}}, inst.Instruction{Opcode: "MULSD", AliasOf: "", Summary: "Multiply Scalar Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MULSS", AliasOf: "", Summary: "Multiply Scalar Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MULW", AliasOf: "", Summary: "Unsigned Multiply", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "ax", Action: 0x3}, inst.ImplicitOperand{Register: "dx", Action: 0x2}}}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "ax", Action: 0x3}, inst.ImplicitOperand{Register: "dx", Action: 0x2}}}}}, inst.Instruction{Opcode: "MULXL", AliasOf: "", Summary: "Unsigned Multiply Without Affecting Flags", Forms: []inst.Form{inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "edx", Action: 0x1}}}, inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "edx", Action: 0x1}}}}}, inst.Instruction{Opcode: "MULXQ", AliasOf: "", Summary: "Unsigned Multiply Without Affecting Flags", Forms: []inst.Form{inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "rdx", Action: 0x1}}}, inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "rdx", Action: 0x1}}}}}, inst.Instruction{Opcode: "MWAIT", AliasOf: "", Summary: "Monitor Wait", Forms: []inst.Form{inst.Form{ISA: []string{"MONITOR"}, Operands: []inst.Operand{}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "eax", Action: 0x1}, inst.ImplicitOperand{Register: "ecx", Action: 0x1}}}}}, inst.Instruction{Opcode: "NEGB", AliasOf: "", Summary: "Two's Complement Negation", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "NEGL", AliasOf: "", Summary: "Two's Complement Negation", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "NEGQ", AliasOf: "", Summary: "Two's Complement Negation", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "NEGW", AliasOf: "", Summary: "Two's Complement Negation", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "NOP", AliasOf: "", Summary: "No Operation", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "NOTB", AliasOf: "", Summary: "One's Complement Negation", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "NOTL", AliasOf: "", Summary: "One's Complement Negation", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "NOTQ", AliasOf: "", Summary: "One's Complement Negation", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "NOTW", AliasOf: "", Summary: "One's Complement Negation", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ORB", AliasOf: "", Summary: "Logical Inclusive OR", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "al", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x1}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ORL", AliasOf: "", Summary: "Logical Inclusive OR", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "eax", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ORPD", AliasOf: "", Summary: "Bitwise Logical OR of Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ORPS", AliasOf: "", Summary: "Bitwise Logical OR of Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ORQ", AliasOf: "", Summary: "Logical Inclusive OR", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "rax", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ORW", AliasOf: "", Summary: "Logical Inclusive OR", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}, inst.Operand{Type: "ax", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PABSB", AliasOf: "", Summary: "Packed Absolute Value of Byte Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PABSD", AliasOf: "", Summary: "Packed Absolute Value of Doubleword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PABSW", AliasOf: "", Summary: "Packed Absolute Value of Word Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PACKSSLW", AliasOf: "", Summary: "Pack Doublewords into Words with Signed Saturation", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PACKSSWB", AliasOf: "", Summary: "Pack Words into Bytes with Signed Saturation", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PACKUSDW", AliasOf: "", Summary: "Pack Doublewords into Words with Unsigned Saturation", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PACKUSWB", AliasOf: "", Summary: "Pack Words into Bytes with Unsigned Saturation", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PADDB", AliasOf: "", Summary: "Add Packed Byte Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PADDD", AliasOf: "PADDL", Summary: "Add Packed Doubleword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PADDL", AliasOf: "", Summary: "Add Packed Doubleword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PADDQ", AliasOf: "", Summary: "Add Packed Quadword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PADDSB", AliasOf: "", Summary: "Add Packed Signed Byte Integers with Signed Saturation", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PADDSW", AliasOf: "", Summary: "Add Packed Signed Word Integers with Signed Saturation", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PADDUSB", AliasOf: "", Summary: "Add Packed Unsigned Byte Integers with Unsigned Saturation", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PADDUSW", AliasOf: "", Summary: "Add Packed Unsigned Word Integers with Unsigned Saturation", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PADDW", AliasOf: "", Summary: "Add Packed Word Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PALIGNR", AliasOf: "", Summary: "Packed Align Right", Forms: []inst.Form{inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PAND", AliasOf: "", Summary: "Packed Bitwise Logical AND", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PANDN", AliasOf: "", Summary: "Packed Bitwise Logical AND NOT", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PAUSE", AliasOf: "", Summary: "Spin Loop Hint", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PAVGB", AliasOf: "", Summary: "Average Packed Byte Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PAVGW", AliasOf: "", Summary: "Average Packed Word Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PBLENDVB", AliasOf: "", Summary: "Variable Blend Packed Bytes", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm0", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm0", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PBLENDW", AliasOf: "", Summary: "Blend Packed Words", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PCLMULQDQ", AliasOf: "", Summary: "Carry-Less Quadword Multiplication", Forms: []inst.Form{inst.Form{ISA: []string{"PCLMULQDQ"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"PCLMULQDQ"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PCMPEQB", AliasOf: "", Summary: "Compare Packed Byte Data for Equality", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PCMPEQL", AliasOf: "", Summary: "Compare Packed Doubleword Data for Equality", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PCMPEQQ", AliasOf: "", Summary: "Compare Packed Quadword Data for Equality", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PCMPEQW", AliasOf: "", Summary: "Compare Packed Word Data for Equality", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PCMPESTRI", AliasOf: "", Summary: "Packed Compare Explicit Length Strings, Return Index", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "eax", Action: 0x1}, inst.ImplicitOperand{Register: "ecx", Action: 0x2}, inst.ImplicitOperand{Register: "edx", Action: 0x1}}}, inst.Form{ISA: []string{"SSE4.2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "eax", Action: 0x1}, inst.ImplicitOperand{Register: "ecx", Action: 0x2}, inst.ImplicitOperand{Register: "edx", Action: 0x1}}}}}, inst.Instruction{Opcode: "PCMPESTRM", AliasOf: "", Summary: "Packed Compare Explicit Length Strings, Return Mask", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "eax", Action: 0x1}, inst.ImplicitOperand{Register: "edx", Action: 0x1}, inst.ImplicitOperand{Register: "xmm0", Action: 0x2}}}, inst.Form{ISA: []string{"SSE4.2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "eax", Action: 0x1}, inst.ImplicitOperand{Register: "edx", Action: 0x1}, inst.ImplicitOperand{Register: "xmm0", Action: 0x2}}}}}, inst.Instruction{Opcode: "PCMPGTB", AliasOf: "", Summary: "Compare Packed Signed Byte Integers for Greater Than", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PCMPGTL", AliasOf: "", Summary: "Compare Packed Signed Doubleword Integers for Greater Than", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PCMPGTQ", AliasOf: "", Summary: "Compare Packed Data for Greater Than", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PCMPGTW", AliasOf: "", Summary: "Compare Packed Signed Word Integers for Greater Than", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PCMPISTRI", AliasOf: "", Summary: "Packed Compare Implicit Length Strings, Return Index", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "ecx", Action: 0x2}}}, inst.Form{ISA: []string{"SSE4.2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "ecx", Action: 0x2}}}}}, inst.Instruction{Opcode: "PCMPISTRM", AliasOf: "", Summary: "Packed Compare Implicit Length Strings, Return Mask", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "xmm0", Action: 0x2}}}, inst.Form{ISA: []string{"SSE4.2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "xmm0", Action: 0x2}}}}}, inst.Instruction{Opcode: "PDEPL", AliasOf: "", Summary: "Parallel Bits Deposit", Forms: []inst.Form{inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PDEPQ", AliasOf: "", Summary: "Parallel Bits Deposit", Forms: []inst.Form{inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PEXTL", AliasOf: "", Summary: "Parallel Bits Extract", Forms: []inst.Form{inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PEXTQ", AliasOf: "", Summary: "Parallel Bits Extract", Forms: []inst.Form{inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PEXTRB", AliasOf: "", Summary: "Extract Byte", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PEXTRD", AliasOf: "", Summary: "Extract Doubleword", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PEXTRQ", AliasOf: "", Summary: "Extract Quadword", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PEXTRW", AliasOf: "", Summary: "Extract Word", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m16", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PHADDD", AliasOf: "", Summary: "Packed Horizontal Add Doubleword Integer", Forms: []inst.Form{inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PHADDSW", AliasOf: "", Summary: "Packed Horizontal Add Signed Word Integers with Signed Saturation", Forms: []inst.Form{inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PHADDW", AliasOf: "", Summary: "Packed Horizontal Add Word Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PHMINPOSUW", AliasOf: "", Summary: "Packed Horizontal Minimum of Unsigned Word Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PHSUBD", AliasOf: "", Summary: "Packed Horizontal Subtract Doubleword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PHSUBSW", AliasOf: "", Summary: "Packed Horizontal Subtract Signed Word Integers with Signed Saturation", Forms: []inst.Form{inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PHSUBW", AliasOf: "", Summary: "Packed Horizontal Subtract Word Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PINSRB", AliasOf: "", Summary: "Insert Byte", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m8", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PINSRD", AliasOf: "", Summary: "Insert Doubleword", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PINSRQ", AliasOf: "", Summary: "Insert Quadword", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PINSRW", AliasOf: "", Summary: "Insert Word", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMADDUBSW", AliasOf: "", Summary: "Multiply and Add Packed Signed and Unsigned Byte Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMADDWL", AliasOf: "", Summary: "Multiply and Add Packed Signed Word Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMAXSB", AliasOf: "", Summary: "Maximum of Packed Signed Byte Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMAXSD", AliasOf: "", Summary: "Maximum of Packed Signed Doubleword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMAXSW", AliasOf: "", Summary: "Maximum of Packed Signed Word Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMAXUB", AliasOf: "", Summary: "Maximum of Packed Unsigned Byte Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMAXUD", AliasOf: "", Summary: "Maximum of Packed Unsigned Doubleword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMAXUW", AliasOf: "", Summary: "Maximum of Packed Unsigned Word Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMINSB", AliasOf: "", Summary: "Minimum of Packed Signed Byte Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMINSD", AliasOf: "", Summary: "Minimum of Packed Signed Doubleword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMINSW", AliasOf: "", Summary: "Minimum of Packed Signed Word Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMINUB", AliasOf: "", Summary: "Minimum of Packed Unsigned Byte Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMINUD", AliasOf: "", Summary: "Minimum of Packed Unsigned Doubleword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMINUW", AliasOf: "", Summary: "Minimum of Packed Unsigned Word Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMOVMSKB", AliasOf: "", Summary: "Move Byte Mask", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMOVSXBD", AliasOf: "", Summary: "Move Packed Byte Integers to Doubleword Integers with Sign Extension", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMOVSXBQ", AliasOf: "", Summary: "Move Packed Byte Integers to Quadword Integers with Sign Extension", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMOVSXBW", AliasOf: "", Summary: "Move Packed Byte Integers to Word Integers with Sign Extension", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMOVSXDQ", AliasOf: "", Summary: "Move Packed Doubleword Integers to Quadword Integers with Sign Extension", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMOVSXWD", AliasOf: "", Summary: "Move Packed Word Integers to Doubleword Integers with Sign Extension", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMOVSXWQ", AliasOf: "", Summary: "Move Packed Word Integers to Quadword Integers with Sign Extension", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMOVZXBD", AliasOf: "", Summary: "Move Packed Byte Integers to Doubleword Integers with Zero Extension", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMOVZXBQ", AliasOf: "", Summary: "Move Packed Byte Integers to Quadword Integers with Zero Extension", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMOVZXBW", AliasOf: "", Summary: "Move Packed Byte Integers to Word Integers with Zero Extension", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMOVZXDQ", AliasOf: "", Summary: "Move Packed Doubleword Integers to Quadword Integers with Zero Extension", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMOVZXWD", AliasOf: "", Summary: "Move Packed Word Integers to Doubleword Integers with Zero Extension", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMOVZXWQ", AliasOf: "", Summary: "Move Packed Word Integers to Quadword Integers with Zero Extension", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMULDQ", AliasOf: "", Summary: "Multiply Packed Signed Doubleword Integers and Store Quadword Result", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMULHRSW", AliasOf: "", Summary: "Packed Multiply Signed Word Integers and Store High Result with Round and Scale", Forms: []inst.Form{inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMULHUW", AliasOf: "", Summary: "Multiply Packed Unsigned Word Integers and Store High Result", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMULHW", AliasOf: "", Summary: "Multiply Packed Signed Word Integers and Store High Result", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMULLD", AliasOf: "", Summary: "Multiply Packed Signed Doubleword Integers and Store Low Result", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMULLW", AliasOf: "", Summary: "Multiply Packed Signed Word Integers and Store Low Result", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMULULQ", AliasOf: "", Summary: "Multiply Packed Unsigned Doubleword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "POPCNTL", AliasOf: "", Summary: "Count of Number of Bits Set to 1", Forms: []inst.Form{inst.Form{ISA: []string{"POPCNT"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"POPCNT"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "POPCNTQ", AliasOf: "", Summary: "Count of Number of Bits Set to 1", Forms: []inst.Form{inst.Form{ISA: []string{"POPCNT"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"POPCNT"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "POPCNTW", AliasOf: "", Summary: "Count of Number of Bits Set to 1", Forms: []inst.Form{inst.Form{ISA: []string{"POPCNT"}, Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"POPCNT"}, Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "POPQ", AliasOf: "", Summary: "Pop a Value from the Stack", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "POPW", AliasOf: "", Summary: "Pop a Value from the Stack", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "POR", AliasOf: "", Summary: "Packed Bitwise Logical OR", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PREFETCHNTA", AliasOf: "", Summary: "Prefetch Data Into Caches using NTA Hint", Forms: []inst.Form{inst.Form{ISA: []string{"MMX+"}, Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PREFETCHT0", AliasOf: "", Summary: "Prefetch Data Into Caches using T0 Hint", Forms: []inst.Form{inst.Form{ISA: []string{"MMX+"}, Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PREFETCHT1", AliasOf: "", Summary: "Prefetch Data Into Caches using T1 Hint", Forms: []inst.Form{inst.Form{ISA: []string{"MMX+"}, Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PREFETCHT2", AliasOf: "", Summary: "Prefetch Data Into Caches using T2 Hint", Forms: []inst.Form{inst.Form{ISA: []string{"MMX+"}, Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PSADBW", AliasOf: "", Summary: "Compute Sum of Absolute Differences", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PSHUFB", AliasOf: "", Summary: "Packed Shuffle Bytes", Forms: []inst.Form{inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PSHUFD", AliasOf: "PSHUFL", Summary: "Shuffle Packed Doublewords", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PSHUFHW", AliasOf: "", Summary: "Shuffle Packed High Words", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PSHUFL", AliasOf: "", Summary: "Shuffle Packed Doublewords", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PSHUFLW", AliasOf: "", Summary: "Shuffle Packed Low Words", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PSIGNB", AliasOf: "", Summary: "Packed Sign of Byte Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PSIGND", AliasOf: "", Summary: "Packed Sign of Doubleword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PSIGNW", AliasOf: "", Summary: "Packed Sign of Word Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PSLLDQ", AliasOf: "PSLLO", Summary: "Shift Packed Double Quadword Left Logical", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PSLLL", AliasOf: "", Summary: "Shift Packed Doubleword Data Left Logical", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PSLLO", AliasOf: "", Summary: "Shift Packed Double Quadword Left Logical", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PSLLQ", AliasOf: "", Summary: "Shift Packed Quadword Data Left Logical", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PSLLW", AliasOf: "", Summary: "Shift Packed Word Data Left Logical", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PSRAL", AliasOf: "", Summary: "Shift Packed Doubleword Data Right Arithmetic", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PSRAW", AliasOf: "", Summary: "Shift Packed Word Data Right Arithmetic", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PSRLDQ", AliasOf: "PSRLO", Summary: "Shift Packed Double Quadword Right Logical", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PSRLL", AliasOf: "", Summary: "Shift Packed Doubleword Data Right Logical", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PSRLO", AliasOf: "", Summary: "Shift Packed Double Quadword Right Logical", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PSRLQ", AliasOf: "", Summary: "Shift Packed Quadword Data Right Logical", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PSRLW", AliasOf: "", Summary: "Shift Packed Word Data Right Logical", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PSUBB", AliasOf: "", Summary: "Subtract Packed Byte Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PSUBL", AliasOf: "", Summary: "Subtract Packed Doubleword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PSUBQ", AliasOf: "", Summary: "Subtract Packed Quadword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PSUBSB", AliasOf: "", Summary: "Subtract Packed Signed Byte Integers with Signed Saturation", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PSUBSW", AliasOf: "", Summary: "Subtract Packed Signed Word Integers with Signed Saturation", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PSUBUSB", AliasOf: "", Summary: "Subtract Packed Unsigned Byte Integers with Unsigned Saturation", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PSUBUSW", AliasOf: "", Summary: "Subtract Packed Unsigned Word Integers with Unsigned Saturation", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PSUBW", AliasOf: "", Summary: "Subtract Packed Word Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PTEST", AliasOf: "", Summary: "Packed Logical Compare", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PUNPCKHBW", AliasOf: "", Summary: "Unpack and Interleave High-Order Bytes into Words", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PUNPCKHLQ", AliasOf: "", Summary: "Unpack and Interleave High-Order Doublewords into Quadwords", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PUNPCKHQDQ", AliasOf: "", Summary: "Unpack and Interleave High-Order Quadwords into Double Quadwords", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PUNPCKHWL", AliasOf: "", Summary: "Unpack and Interleave High-Order Words into Doublewords", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PUNPCKLBW", AliasOf: "", Summary: "Unpack and Interleave Low-Order Bytes into Words", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PUNPCKLLQ", AliasOf: "", Summary: "Unpack and Interleave Low-Order Doublewords into Quadwords", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PUNPCKLQDQ", AliasOf: "", Summary: "Unpack and Interleave Low-Order Quadwords into Double Quadwords", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PUNPCKLWL", AliasOf: "", Summary: "Unpack and Interleave Low-Order Words into Doublewords", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PUSHQ", AliasOf: "", Summary: "Push Value Onto the Stack", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PUSHW", AliasOf: "", Summary: "Push Value Onto the Stack", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PXOR", AliasOf: "", Summary: "Packed Bitwise Logical Exclusive OR", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "RCLB", AliasOf: "", Summary: "Rotate Left through Carry Flag", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "RCLL", AliasOf: "", Summary: "Rotate Left through Carry Flag", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "RCLQ", AliasOf: "", Summary: "Rotate Left through Carry Flag", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "RCLW", AliasOf: "", Summary: "Rotate Left through Carry Flag", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "RCPPS", AliasOf: "", Summary: "Compute Approximate Reciprocals of Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "RCPSS", AliasOf: "", Summary: "Compute Approximate Reciprocal of Scalar Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "RCRB", AliasOf: "", Summary: "Rotate Right through Carry Flag", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "RCRL", AliasOf: "", Summary: "Rotate Right through Carry Flag", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "RCRQ", AliasOf: "", Summary: "Rotate Right through Carry Flag", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "RCRW", AliasOf: "", Summary: "Rotate Right through Carry Flag", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "RDRANDL", AliasOf: "", Summary: "Read Random Number", Forms: []inst.Form{inst.Form{ISA: []string{"RDRAND"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "RDRANDQ", AliasOf: "", Summary: "Read Random Number", Forms: []inst.Form{inst.Form{ISA: []string{"RDRAND"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "RDRANDW", AliasOf: "", Summary: "Read Random Number", Forms: []inst.Form{inst.Form{ISA: []string{"RDRAND"}, Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "RDSEEDL", AliasOf: "", Summary: "Read Random SEED", Forms: []inst.Form{inst.Form{ISA: []string{"RDSEED"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "RDSEEDQ", AliasOf: "", Summary: "Read Random SEED", Forms: []inst.Form{inst.Form{ISA: []string{"RDSEED"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "RDSEEDW", AliasOf: "", Summary: "Read Random SEED", Forms: []inst.Form{inst.Form{ISA: []string{"RDSEED"}, Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "RDTSC", AliasOf: "", Summary: "Read Time-Stamp Counter", Forms: []inst.Form{inst.Form{ISA: []string{"RDTSC"}, Operands: []inst.Operand{}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "eax", Action: 0x2}, inst.ImplicitOperand{Register: "edx", Action: 0x2}}}}}, inst.Instruction{Opcode: "RDTSCP", AliasOf: "", Summary: "Read Time-Stamp Counter and Processor ID", Forms: []inst.Form{inst.Form{ISA: []string{"RDTSCP"}, Operands: []inst.Operand{}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "eax", Action: 0x2}, inst.ImplicitOperand{Register: "ecx", Action: 0x2}, inst.ImplicitOperand{Register: "edx", Action: 0x2}}}}}, inst.Instruction{Opcode: "RET", AliasOf: "", Summary: "Return from Procedure", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "RETFL", AliasOf: "", Summary: "Return from Procedure", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "RETFQ", AliasOf: "", Summary: "Return from Procedure", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "RETFW", AliasOf: "", Summary: "Return from Procedure", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ROLB", AliasOf: "", Summary: "Rotate Left", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ROLL", AliasOf: "", Summary: "Rotate Left", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ROLQ", AliasOf: "", Summary: "Rotate Left", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ROLW", AliasOf: "", Summary: "Rotate Left", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "RORB", AliasOf: "", Summary: "Rotate Right", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "RORL", AliasOf: "", Summary: "Rotate Right", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "RORQ", AliasOf: "", Summary: "Rotate Right", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "RORW", AliasOf: "", Summary: "Rotate Right", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "RORXL", AliasOf: "", Summary: "Rotate Right Logical Without Affecting Flags", Forms: []inst.Form{inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "RORXQ", AliasOf: "", Summary: "Rotate Right Logical Without Affecting Flags", Forms: []inst.Form{inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ROUNDPD", AliasOf: "", Summary: "Round Packed Double Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ROUNDPS", AliasOf: "", Summary: "Round Packed Single Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ROUNDSD", AliasOf: "", Summary: "Round Scalar Double Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ROUNDSS", AliasOf: "", Summary: "Round Scalar Single Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "RSQRTPS", AliasOf: "", Summary: "Compute Reciprocals of Square Roots of Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "RSQRTSS", AliasOf: "", Summary: "Compute Reciprocal of Square Root of Scalar Single-Precision Floating-Point Value", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SALB", AliasOf: "", Summary: "Arithmetic Shift Left", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SALL", AliasOf: "", Summary: "Arithmetic Shift Left", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SALQ", AliasOf: "", Summary: "Arithmetic Shift Left", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SALW", AliasOf: "", Summary: "Arithmetic Shift Left", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SARB", AliasOf: "", Summary: "Arithmetic Shift Right", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SARL", AliasOf: "", Summary: "Arithmetic Shift Right", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SARQ", AliasOf: "", Summary: "Arithmetic Shift Right", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SARW", AliasOf: "", Summary: "Arithmetic Shift Right", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SARXL", AliasOf: "", Summary: "Arithmetic Shift Right Without Affecting Flags", Forms: []inst.Form{inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SARXQ", AliasOf: "", Summary: "Arithmetic Shift Right Without Affecting Flags", Forms: []inst.Form{inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SBBB", AliasOf: "", Summary: "Subtract with Borrow", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "al", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x1}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SBBL", AliasOf: "", Summary: "Subtract with Borrow", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "eax", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SBBQ", AliasOf: "", Summary: "Subtract with Borrow", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "rax", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SBBW", AliasOf: "", Summary: "Subtract with Borrow", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}, inst.Operand{Type: "ax", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SETCC", AliasOf: "", Summary: "Set byte if above or equal (CF == 0)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SETCS", AliasOf: "", Summary: "Set byte if below (CF == 1)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SETEQ", AliasOf: "", Summary: "Set byte if equal (ZF == 1)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SETGE", AliasOf: "", Summary: "Set byte if greater or equal (SF == OF)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SETGT", AliasOf: "", Summary: "Set byte if greater (ZF == 0 and SF == OF)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SETHI", AliasOf: "", Summary: "Set byte if above (CF == 0 and ZF == 0)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SETLE", AliasOf: "", Summary: "Set byte if less or equal (ZF == 1 or SF != OF)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SETLS", AliasOf: "", Summary: "Set byte if below or equal (CF == 1 or ZF == 1)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SETLT", AliasOf: "", Summary: "Set byte if less (SF != OF)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SETMI", AliasOf: "", Summary: "Set byte if sign (SF == 1)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SETNE", AliasOf: "", Summary: "Set byte if not equal (ZF == 0)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SETOC", AliasOf: "", Summary: "Set byte if not overflow (OF == 0)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SETOS", AliasOf: "", Summary: "Set byte if overflow (OF == 1)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SETPC", AliasOf: "", Summary: "Set byte if not parity (PF == 0)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SETPL", AliasOf: "", Summary: "Set byte if not sign (SF == 0)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SETPS", AliasOf: "", Summary: "Set byte if parity (PF == 1)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SFENCE", AliasOf: "", Summary: "Store Fence", Forms: []inst.Form{inst.Form{ISA: []string{"MMX+"}, Operands: []inst.Operand{}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SHA1MSG1", AliasOf: "", Summary: "Perform an Intermediate Calculation for the Next Four SHA1 Message Doublewords", Forms: []inst.Form{inst.Form{ISA: []string{"SHA"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SHA"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SHA1MSG2", AliasOf: "", Summary: "Perform a Final Calculation for the Next Four SHA1 Message Doublewords", Forms: []inst.Form{inst.Form{ISA: []string{"SHA"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SHA"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SHA1NEXTE", AliasOf: "", Summary: "Calculate SHA1 State Variable E after Four Rounds", Forms: []inst.Form{inst.Form{ISA: []string{"SHA"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SHA"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SHA1RNDS4", AliasOf: "", Summary: "Perform Four Rounds of SHA1 Operation", Forms: []inst.Form{inst.Form{ISA: []string{"SHA"}, Operands: []inst.Operand{inst.Operand{Type: "imm2u", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SHA"}, Operands: []inst.Operand{inst.Operand{Type: "imm2u", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SHA256MSG1", AliasOf: "", Summary: "Perform an Intermediate Calculation for the Next Four SHA256 Message Doublewords", Forms: []inst.Form{inst.Form{ISA: []string{"SHA"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SHA"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SHA256MSG2", AliasOf: "", Summary: "Perform a Final Calculation for the Next Four SHA256 Message Doublewords", Forms: []inst.Form{inst.Form{ISA: []string{"SHA"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SHA"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SHA256RNDS2", AliasOf: "", Summary: "Perform Two Rounds of SHA256 Operation", Forms: []inst.Form{inst.Form{ISA: []string{"SHA"}, Operands: []inst.Operand{inst.Operand{Type: "xmm0", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SHA"}, Operands: []inst.Operand{inst.Operand{Type: "xmm0", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SHLB", AliasOf: "", Summary: "Logical Shift Left", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SHLL", AliasOf: "", Summary: "Logical Shift Left", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SHLQ", AliasOf: "", Summary: "Logical Shift Left", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SHLW", AliasOf: "", Summary: "Logical Shift Left", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SHLXL", AliasOf: "", Summary: "Logical Shift Left Without Affecting Flags", Forms: []inst.Form{inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SHLXQ", AliasOf: "", Summary: "Logical Shift Left Without Affecting Flags", Forms: []inst.Form{inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SHRB", AliasOf: "", Summary: "Logical Shift Right", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SHRL", AliasOf: "", Summary: "Logical Shift Right", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SHRQ", AliasOf: "", Summary: "Logical Shift Right", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SHRW", AliasOf: "", Summary: "Logical Shift Right", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SHRXL", AliasOf: "", Summary: "Logical Shift Right Without Affecting Flags", Forms: []inst.Form{inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SHRXQ", AliasOf: "", Summary: "Logical Shift Right Without Affecting Flags", Forms: []inst.Form{inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SHUFPD", AliasOf: "", Summary: "Shuffle Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SHUFPS", AliasOf: "", Summary: "Shuffle Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SQRTPD", AliasOf: "", Summary: "Compute Square Roots of Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SQRTPS", AliasOf: "", Summary: "Compute Square Roots of Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SQRTSD", AliasOf: "", Summary: "Compute Square Root of Scalar Double-Precision Floating-Point Value", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SQRTSS", AliasOf: "", Summary: "Compute Square Root of Scalar Single-Precision Floating-Point Value", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "STC", AliasOf: "", Summary: "Set Carry Flag", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "STD", AliasOf: "", Summary: "Set Direction Flag", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "STMXCSR", AliasOf: "", Summary: "Store MXCSR Register State", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SUBB", AliasOf: "", Summary: "Subtract", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "al", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x1}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SUBL", AliasOf: "", Summary: "Subtract", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "eax", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SUBPD", AliasOf: "", Summary: "Subtract Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SUBPS", AliasOf: "", Summary: "Subtract Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SUBQ", AliasOf: "", Summary: "Subtract", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "rax", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SUBSD", AliasOf: "", Summary: "Subtract Scalar Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SUBSS", AliasOf: "", Summary: "Subtract Scalar Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SUBW", AliasOf: "", Summary: "Subtract", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}, inst.Operand{Type: "ax", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SYSCALL", AliasOf: "", Summary: "Fast System Call", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "r11", Action: 0x2}, inst.ImplicitOperand{Register: "rcx", Action: 0x2}}}}}, inst.Instruction{Opcode: "TESTB", AliasOf: "", Summary: "Logical Compare", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "al", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r8", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "r8", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m8", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "m8", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "TESTL", AliasOf: "", Summary: "Logical Compare", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "eax", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "TESTQ", AliasOf: "", Summary: "Logical Compare", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "rax", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "TESTW", AliasOf: "", Summary: "Logical Compare", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}, inst.Operand{Type: "ax", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "m16", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "TZCNTL", AliasOf: "", Summary: "Count the Number of Trailing Zero Bits", Forms: []inst.Form{inst.Form{ISA: []string{"BMI"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"BMI"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "TZCNTQ", AliasOf: "", Summary: "Count the Number of Trailing Zero Bits", Forms: []inst.Form{inst.Form{ISA: []string{"BMI"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"BMI"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "TZCNTW", AliasOf: "", Summary: "Count the Number of Trailing Zero Bits", Forms: []inst.Form{inst.Form{ISA: []string{"BMI"}, Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"BMI"}, Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "UCOMISD", AliasOf: "", Summary: "Unordered Compare Scalar Double-Precision Floating-Point Values and Set EFLAGS", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "UCOMISS", AliasOf: "", Summary: "Unordered Compare Scalar Single-Precision Floating-Point Values and Set EFLAGS", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "UD2", AliasOf: "", Summary: "Undefined Instruction", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "UNPCKHPD", AliasOf: "", Summary: "Unpack and Interleave High Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "UNPCKHPS", AliasOf: "", Summary: "Unpack and Interleave High Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "UNPCKLPD", AliasOf: "", Summary: "Unpack and Interleave Low Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "UNPCKLPS", AliasOf: "", Summary: "Unpack and Interleave Low Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VADDPD", AliasOf: "", Summary: "Add Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VADDPS", AliasOf: "", Summary: "Add Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VADDSD", AliasOf: "", Summary: "Add Scalar Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VADDSS", AliasOf: "", Summary: "Add Scalar Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VADDSUBPD", AliasOf: "", Summary: "Packed Double-FP Add/Subtract", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VADDSUBPS", AliasOf: "", Summary: "Packed Single-FP Add/Subtract", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VAESDEC", AliasOf: "", Summary: "Perform One Round of an AES Decryption Flow", Forms: []inst.Form{inst.Form{ISA: []string{"AVX", "AES"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX", "AES"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VAESDECLAST", AliasOf: "", Summary: "Perform Last Round of an AES Decryption Flow", Forms: []inst.Form{inst.Form{ISA: []string{"AVX", "AES"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX", "AES"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VAESENC", AliasOf: "", Summary: "Perform One Round of an AES Encryption Flow", Forms: []inst.Form{inst.Form{ISA: []string{"AVX", "AES"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX", "AES"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VAESENCLAST", AliasOf: "", Summary: "Perform Last Round of an AES Encryption Flow", Forms: []inst.Form{inst.Form{ISA: []string{"AVX", "AES"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX", "AES"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VAESIMC", AliasOf: "", Summary: "Perform the AES InvMixColumn Transformation", Forms: []inst.Form{inst.Form{ISA: []string{"AVX", "AES"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX", "AES"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VAESKEYGENASSIST", AliasOf: "", Summary: "AES Round Key Generation Assist", Forms: []inst.Form{inst.Form{ISA: []string{"AVX", "AES"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX", "AES"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VANDNPD", AliasOf: "", Summary: "Bitwise Logical AND NOT of Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VANDNPS", AliasOf: "", Summary: "Bitwise Logical AND NOT of Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VANDPD", AliasOf: "", Summary: "Bitwise Logical AND of Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VANDPS", AliasOf: "", Summary: "Bitwise Logical AND of Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VBLENDPD", AliasOf: "", Summary: "Blend Packed Double Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VBLENDPS", AliasOf: "", Summary: " Blend Packed Single Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VBLENDVPD", AliasOf: "", Summary: " Variable Blend Packed Double Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VBLENDVPS", AliasOf: "", Summary: " Variable Blend Packed Single Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VBROADCASTF128", AliasOf: "", Summary: "Broadcast 128 Bit of Floating-Point Data", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VBROADCASTI128", AliasOf: "", Summary: "Broadcast 128 Bits of Integer Data", Forms: []inst.Form{inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VBROADCASTSD", AliasOf: "", Summary: "Broadcast Double-Precision Floating-Point Element", Forms: []inst.Form{inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VBROADCASTSS", AliasOf: "", Summary: "Broadcast Single-Precision Floating-Point Element", Forms: []inst.Form{inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCMPPD", AliasOf: "", Summary: "Compare Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCMPPS", AliasOf: "", Summary: "Compare Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCMPSD", AliasOf: "", Summary: "Compare Scalar Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCMPSS", AliasOf: "", Summary: "Compare Scalar Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCOMISD", AliasOf: "", Summary: "Compare Scalar Ordered Double-Precision Floating-Point Values and Set EFLAGS", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCOMISS", AliasOf: "", Summary: "Compare Scalar Ordered Single-Precision Floating-Point Values and Set EFLAGS", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCVTDQ2PD", AliasOf: "", Summary: "Convert Packed Dword Integers to Packed Double-Precision FP Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCVTDQ2PS", AliasOf: "", Summary: "Convert Packed Dword Integers to Packed Single-Precision FP Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCVTPD2DQX", AliasOf: "", Summary: "Convert Packed Double-Precision FP Values to Packed Dword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCVTPD2DQY", AliasOf: "", Summary: "Convert Packed Double-Precision FP Values to Packed Dword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCVTPD2PSX", AliasOf: "", Summary: "Convert Packed Double-Precision FP Values to Packed Single-Precision FP Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCVTPD2PSY", AliasOf: "", Summary: "Convert Packed Double-Precision FP Values to Packed Single-Precision FP Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCVTPH2PS", AliasOf: "", Summary: "Convert Half-Precision FP Values to Single-Precision FP Values", Forms: []inst.Form{inst.Form{ISA: []string{"F16C"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"F16C"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"F16C"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"F16C"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCVTPS2DQ", AliasOf: "", Summary: "Convert Packed Single-Precision FP Values to Packed Dword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCVTPS2PD", AliasOf: "", Summary: "Convert Packed Single-Precision FP Values to Packed Double-Precision FP Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCVTPS2PH", AliasOf: "", Summary: "Convert Single-Precision FP value to Half-Precision FP value", Forms: []inst.Form{inst.Form{ISA: []string{"F16C"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"F16C"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"F16C"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"F16C"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCVTSD2SI", AliasOf: "", Summary: "Convert Scalar Double-Precision FP Value to Integer", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCVTSD2SIQ", AliasOf: "", Summary: "Convert Scalar Double-Precision FP Value to Integer", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCVTSD2SS", AliasOf: "", Summary: "Convert Scalar Double-Precision FP Value to Scalar Single-Precision FP Value", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCVTSI2SDL", AliasOf: "", Summary: "Convert Dword Integer to Scalar Double-Precision FP Value", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCVTSI2SDQ", AliasOf: "", Summary: "Convert Dword Integer to Scalar Double-Precision FP Value", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCVTSI2SSL", AliasOf: "", Summary: "Convert Dword Integer to Scalar Single-Precision FP Value", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCVTSI2SSQ", AliasOf: "", Summary: "Convert Dword Integer to Scalar Single-Precision FP Value", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCVTSS2SD", AliasOf: "", Summary: "Convert Scalar Single-Precision FP Value to Scalar Double-Precision FP Value", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCVTSS2SI", AliasOf: "", Summary: "Convert Scalar Single-Precision FP Value to Dword Integer", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCVTSS2SIQ", AliasOf: "", Summary: "Convert Scalar Single-Precision FP Value to Dword Integer", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCVTTPD2DQX", AliasOf: "", Summary: "Convert with Truncation Packed Double-Precision FP Values to Packed Dword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCVTTPD2DQY", AliasOf: "", Summary: "Convert with Truncation Packed Double-Precision FP Values to Packed Dword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCVTTPS2DQ", AliasOf: "", Summary: "Convert with Truncation Packed Single-Precision FP Values to Packed Dword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCVTTSD2SI", AliasOf: "", Summary: "Convert with Truncation Scalar Double-Precision FP Value to Signed Integer", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCVTTSD2SIQ", AliasOf: "", Summary: "Convert with Truncation Scalar Double-Precision FP Value to Signed Integer", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCVTTSS2SI", AliasOf: "", Summary: "Convert with Truncation Scalar Single-Precision FP Value to Dword Integer", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCVTTSS2SIQ", AliasOf: "", Summary: "Convert with Truncation Scalar Single-Precision FP Value to Dword Integer", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VDIVPD", AliasOf: "", Summary: "Divide Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VDIVPS", AliasOf: "", Summary: "Divide Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VDIVSD", AliasOf: "", Summary: "Divide Scalar Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VDIVSS", AliasOf: "", Summary: "Divide Scalar Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VDPPD", AliasOf: "", Summary: "Dot Product of Packed Double Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VDPPS", AliasOf: "", Summary: "Dot Product of Packed Single Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VEXTRACTF128", AliasOf: "", Summary: "Extract Packed Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VEXTRACTI128", AliasOf: "", Summary: "Extract Packed Integer Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VEXTRACTPS", AliasOf: "", Summary: "Extract Packed Single Precision Floating-Point Value", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMADD132PD", AliasOf: "", Summary: "Fused Multiply-Add of Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMADD132PS", AliasOf: "", Summary: "Fused Multiply-Add of Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMADD132SD", AliasOf: "", Summary: "Fused Multiply-Add of Scalar Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMADD132SS", AliasOf: "", Summary: "Fused Multiply-Add of Scalar Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMADD213PD", AliasOf: "", Summary: "Fused Multiply-Add of Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMADD213PS", AliasOf: "", Summary: "Fused Multiply-Add of Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMADD213SD", AliasOf: "", Summary: "Fused Multiply-Add of Scalar Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMADD213SS", AliasOf: "", Summary: "Fused Multiply-Add of Scalar Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMADD231PD", AliasOf: "", Summary: "Fused Multiply-Add of Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMADD231PS", AliasOf: "", Summary: "Fused Multiply-Add of Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMADD231SD", AliasOf: "", Summary: "Fused Multiply-Add of Scalar Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMADD231SS", AliasOf: "", Summary: "Fused Multiply-Add of Scalar Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMADDSUB132PD", AliasOf: "", Summary: "Fused Multiply-Alternating Add/Subtract of Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMADDSUB132PS", AliasOf: "", Summary: "Fused Multiply-Alternating Add/Subtract of Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMADDSUB213PD", AliasOf: "", Summary: "Fused Multiply-Alternating Add/Subtract of Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMADDSUB213PS", AliasOf: "", Summary: "Fused Multiply-Alternating Add/Subtract of Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMADDSUB231PD", AliasOf: "", Summary: "Fused Multiply-Alternating Add/Subtract of Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMADDSUB231PS", AliasOf: "", Summary: "Fused Multiply-Alternating Add/Subtract of Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMSUB132PD", AliasOf: "", Summary: "Fused Multiply-Subtract of Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMSUB132PS", AliasOf: "", Summary: "Fused Multiply-Subtract of Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMSUB132SD", AliasOf: "", Summary: "Fused Multiply-Subtract of Scalar Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMSUB132SS", AliasOf: "", Summary: "Fused Multiply-Subtract of Scalar Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMSUB213PD", AliasOf: "", Summary: "Fused Multiply-Subtract of Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMSUB213PS", AliasOf: "", Summary: "Fused Multiply-Subtract of Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMSUB213SD", AliasOf: "", Summary: "Fused Multiply-Subtract of Scalar Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMSUB213SS", AliasOf: "", Summary: "Fused Multiply-Subtract of Scalar Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMSUB231PD", AliasOf: "", Summary: "Fused Multiply-Subtract of Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMSUB231PS", AliasOf: "", Summary: "Fused Multiply-Subtract of Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMSUB231SD", AliasOf: "", Summary: "Fused Multiply-Subtract of Scalar Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMSUB231SS", AliasOf: "", Summary: "Fused Multiply-Subtract of Scalar Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMSUBADD132PD", AliasOf: "", Summary: "Fused Multiply-Alternating Subtract/Add of Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMSUBADD132PS", AliasOf: "", Summary: "Fused Multiply-Alternating Subtract/Add of Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMSUBADD213PD", AliasOf: "", Summary: "Fused Multiply-Alternating Subtract/Add of Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMSUBADD213PS", AliasOf: "", Summary: "Fused Multiply-Alternating Subtract/Add of Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMSUBADD231PD", AliasOf: "", Summary: "Fused Multiply-Alternating Subtract/Add of Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMSUBADD231PS", AliasOf: "", Summary: "Fused Multiply-Alternating Subtract/Add of Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFNMADD132PD", AliasOf: "", Summary: "Fused Negative Multiply-Add of Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFNMADD132PS", AliasOf: "", Summary: "Fused Negative Multiply-Add of Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFNMADD132SD", AliasOf: "", Summary: "Fused Negative Multiply-Add of Scalar Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFNMADD132SS", AliasOf: "", Summary: "Fused Negative Multiply-Add of Scalar Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFNMADD213PD", AliasOf: "", Summary: "Fused Negative Multiply-Add of Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFNMADD213PS", AliasOf: "", Summary: "Fused Negative Multiply-Add of Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFNMADD213SD", AliasOf: "", Summary: "Fused Negative Multiply-Add of Scalar Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFNMADD213SS", AliasOf: "", Summary: "Fused Negative Multiply-Add of Scalar Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFNMADD231PD", AliasOf: "", Summary: "Fused Negative Multiply-Add of Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFNMADD231PS", AliasOf: "", Summary: "Fused Negative Multiply-Add of Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFNMADD231SD", AliasOf: "", Summary: "Fused Negative Multiply-Add of Scalar Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFNMADD231SS", AliasOf: "", Summary: "Fused Negative Multiply-Add of Scalar Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFNMSUB132PD", AliasOf: "", Summary: "Fused Negative Multiply-Subtract of Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFNMSUB132PS", AliasOf: "", Summary: "Fused Negative Multiply-Subtract of Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFNMSUB132SD", AliasOf: "", Summary: "Fused Negative Multiply-Subtract of Scalar Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFNMSUB132SS", AliasOf: "", Summary: "Fused Negative Multiply-Subtract of Scalar Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFNMSUB213PD", AliasOf: "", Summary: "Fused Negative Multiply-Subtract of Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFNMSUB213PS", AliasOf: "", Summary: "Fused Negative Multiply-Subtract of Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFNMSUB213SD", AliasOf: "", Summary: "Fused Negative Multiply-Subtract of Scalar Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFNMSUB213SS", AliasOf: "", Summary: "Fused Negative Multiply-Subtract of Scalar Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFNMSUB231PD", AliasOf: "", Summary: "Fused Negative Multiply-Subtract of Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFNMSUB231PS", AliasOf: "", Summary: "Fused Negative Multiply-Subtract of Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFNMSUB231SD", AliasOf: "", Summary: "Fused Negative Multiply-Subtract of Scalar Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFNMSUB231SS", AliasOf: "", Summary: "Fused Negative Multiply-Subtract of Scalar Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VGATHERDPD", AliasOf: "", Summary: "Gather Packed Double-Precision Floating-Point Values Using Signed Doubleword Indices", Forms: []inst.Form{inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x3}, inst.Operand{Type: "vm32x", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x3}, inst.Operand{Type: "vm32x", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VGATHERDPS", AliasOf: "", Summary: "Gather Packed Single-Precision Floating-Point Values Using Signed Doubleword Indices", Forms: []inst.Form{inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x3}, inst.Operand{Type: "vm32x", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x3}, inst.Operand{Type: "vm32y", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VGATHERQPD", AliasOf: "", Summary: "Gather Packed Double-Precision Floating-Point Values Using Signed Quadword Indices", Forms: []inst.Form{inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x3}, inst.Operand{Type: "vm64x", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x3}, inst.Operand{Type: "vm64y", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VGATHERQPS", AliasOf: "", Summary: "Gather Packed Single-Precision Floating-Point Values Using Signed Quadword Indices", Forms: []inst.Form{inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x3}, inst.Operand{Type: "vm64x", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x3}, inst.Operand{Type: "vm64y", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VHADDPD", AliasOf: "", Summary: "Packed Double-FP Horizontal Add", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VHADDPS", AliasOf: "", Summary: "Packed Single-FP Horizontal Add", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VHSUBPD", AliasOf: "", Summary: "Packed Double-FP Horizontal Subtract", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VHSUBPS", AliasOf: "", Summary: "Packed Single-FP Horizontal Subtract", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VINSERTF128", AliasOf: "", Summary: "Insert Packed Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VINSERTI128", AliasOf: "", Summary: "Insert Packed Integer Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VINSERTPS", AliasOf: "", Summary: "Insert Packed Single Precision Floating-Point Value", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VLDDQU", AliasOf: "", Summary: "Load Unaligned Integer 128 Bits", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VLDMXCSR", AliasOf: "", Summary: "Load MXCSR Register", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMASKMOVDQU", AliasOf: "", Summary: "Store Selected Bytes of Double Quadword", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "rdi", Action: 0x1}}}}}, inst.Instruction{Opcode: "VMASKMOVPD", AliasOf: "", Summary: "Conditional Move Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "m256", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMASKMOVPS", AliasOf: "", Summary: "Conditional Move Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "m256", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMAXPD", AliasOf: "", Summary: "Return Maximum Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMAXPS", AliasOf: "", Summary: "Return Maximum Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMAXSD", AliasOf: "", Summary: "Return Maximum Scalar Double-Precision Floating-Point Value", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMAXSS", AliasOf: "", Summary: "Return Maximum Scalar Single-Precision Floating-Point Value", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMINPD", AliasOf: "", Summary: "Return Minimum Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMINPS", AliasOf: "", Summary: "Return Minimum Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMINSD", AliasOf: "", Summary: "Return Minimum Scalar Double-Precision Floating-Point Value", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMINSS", AliasOf: "", Summary: "Return Minimum Scalar Single-Precision Floating-Point Value", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMOVAPD", AliasOf: "", Summary: "Move Aligned Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "m256", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMOVAPS", AliasOf: "", Summary: "Move Aligned Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "m256", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMOVD", AliasOf: "", Summary: "Move Doubleword", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMOVDDUP", AliasOf: "", Summary: "Move One Double-FP and Duplicate", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMOVDQA", AliasOf: "", Summary: "Move Aligned Double Quadword", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "m256", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMOVDQU", AliasOf: "", Summary: "Move Unaligned Double Quadword", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "m256", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMOVHLPS", AliasOf: "", Summary: "Move Packed Single-Precision Floating-Point Values High to Low", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMOVHPD", AliasOf: "", Summary: "Move High Packed Double-Precision Floating-Point Value", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMOVHPS", AliasOf: "", Summary: "Move High Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMOVLHPS", AliasOf: "", Summary: "Move Packed Single-Precision Floating-Point Values Low to High", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMOVLPD", AliasOf: "", Summary: "Move Low Packed Double-Precision Floating-Point Value", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMOVLPS", AliasOf: "", Summary: "Move Low Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMOVMSKPD", AliasOf: "", Summary: "Extract Packed Double-Precision Floating-Point Sign Mask", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMOVMSKPS", AliasOf: "", Summary: "Extract Packed Single-Precision Floating-Point Sign Mask", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMOVNTDQ", AliasOf: "", Summary: "Store Double Quadword Using Non-Temporal Hint", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "m256", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMOVNTDQA", AliasOf: "", Summary: "Load Double Quadword Non-Temporal Aligned Hint", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMOVNTPD", AliasOf: "", Summary: "Store Packed Double-Precision Floating-Point Values Using Non-Temporal Hint", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "m256", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMOVNTPS", AliasOf: "", Summary: "Store Packed Single-Precision Floating-Point Values Using Non-Temporal Hint", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "m256", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMOVQ", AliasOf: "", Summary: "Move Quadword", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMOVSD", AliasOf: "", Summary: "Move Scalar Double-Precision Floating-Point Value", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMOVSHDUP", AliasOf: "", Summary: "Move Packed Single-FP High and Duplicate", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMOVSLDUP", AliasOf: "", Summary: "Move Packed Single-FP Low and Duplicate", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMOVSS", AliasOf: "", Summary: "Move Scalar Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMOVUPD", AliasOf: "", Summary: "Move Unaligned Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "m256", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMOVUPS", AliasOf: "", Summary: "Move Unaligned Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "m256", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMPSADBW", AliasOf: "", Summary: "Compute Multiple Packed Sums of Absolute Difference", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMULPD", AliasOf: "", Summary: "Multiply Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMULPS", AliasOf: "", Summary: "Multiply Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMULSD", AliasOf: "", Summary: "Multiply Scalar Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMULSS", AliasOf: "", Summary: "Multiply Scalar Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VORPD", AliasOf: "", Summary: "Bitwise Logical OR of Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VORPS", AliasOf: "", Summary: "Bitwise Logical OR of Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPABSB", AliasOf: "", Summary: "Packed Absolute Value of Byte Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPABSD", AliasOf: "", Summary: "Packed Absolute Value of Doubleword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPABSW", AliasOf: "", Summary: "Packed Absolute Value of Word Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPACKSSDW", AliasOf: "", Summary: "Pack Doublewords into Words with Signed Saturation", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPACKSSWB", AliasOf: "", Summary: "Pack Words into Bytes with Signed Saturation", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPACKUSDW", AliasOf: "", Summary: "Pack Doublewords into Words with Unsigned Saturation", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPACKUSWB", AliasOf: "", Summary: "Pack Words into Bytes with Unsigned Saturation", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPADDB", AliasOf: "", Summary: "Add Packed Byte Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPADDD", AliasOf: "", Summary: "Add Packed Doubleword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPADDQ", AliasOf: "", Summary: "Add Packed Quadword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPADDSB", AliasOf: "", Summary: "Add Packed Signed Byte Integers with Signed Saturation", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPADDSW", AliasOf: "", Summary: "Add Packed Signed Word Integers with Signed Saturation", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPADDUSB", AliasOf: "", Summary: "Add Packed Unsigned Byte Integers with Unsigned Saturation", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPADDUSW", AliasOf: "", Summary: "Add Packed Unsigned Word Integers with Unsigned Saturation", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPADDW", AliasOf: "", Summary: "Add Packed Word Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPALIGNR", AliasOf: "", Summary: "Packed Align Right", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPAND", AliasOf: "", Summary: "Packed Bitwise Logical AND", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPANDN", AliasOf: "", Summary: "Packed Bitwise Logical AND NOT", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPAVGB", AliasOf: "", Summary: "Average Packed Byte Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPAVGW", AliasOf: "", Summary: "Average Packed Word Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPBLENDD", AliasOf: "", Summary: "Blend Packed Doublewords", Forms: []inst.Form{inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPBLENDVB", AliasOf: "", Summary: "Variable Blend Packed Bytes", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPBLENDW", AliasOf: "", Summary: "Blend Packed Words", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPBROADCASTB", AliasOf: "", Summary: "Broadcast Byte Integer", Forms: []inst.Form{inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPBROADCASTD", AliasOf: "", Summary: "Broadcast Doubleword Integer", Forms: []inst.Form{inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPBROADCASTQ", AliasOf: "", Summary: "Broadcast Quadword Integer", Forms: []inst.Form{inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPBROADCASTW", AliasOf: "", Summary: "Broadcast Word Integer", Forms: []inst.Form{inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPCLMULQDQ", AliasOf: "", Summary: "Carry-Less Quadword Multiplication", Forms: []inst.Form{inst.Form{ISA: []string{"AVX", "PCLMULQDQ"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX", "PCLMULQDQ"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPCMPEQB", AliasOf: "", Summary: "Compare Packed Byte Data for Equality", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPCMPEQD", AliasOf: "", Summary: "Compare Packed Doubleword Data for Equality", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPCMPEQQ", AliasOf: "", Summary: "Compare Packed Quadword Data for Equality", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPCMPEQW", AliasOf: "", Summary: "Compare Packed Word Data for Equality", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPCMPESTRI", AliasOf: "", Summary: "Packed Compare Explicit Length Strings, Return Index", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "eax", Action: 0x1}, inst.ImplicitOperand{Register: "ecx", Action: 0x2}, inst.ImplicitOperand{Register: "edx", Action: 0x1}}}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "eax", Action: 0x1}, inst.ImplicitOperand{Register: "ecx", Action: 0x2}, inst.ImplicitOperand{Register: "edx", Action: 0x1}}}}}, inst.Instruction{Opcode: "VPCMPESTRM", AliasOf: "", Summary: "Packed Compare Explicit Length Strings, Return Mask", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "eax", Action: 0x1}, inst.ImplicitOperand{Register: "edx", Action: 0x1}, inst.ImplicitOperand{Register: "xmm0", Action: 0x2}}}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "eax", Action: 0x1}, inst.ImplicitOperand{Register: "edx", Action: 0x1}, inst.ImplicitOperand{Register: "xmm0", Action: 0x2}}}}}, inst.Instruction{Opcode: "VPCMPGTB", AliasOf: "", Summary: "Compare Packed Signed Byte Integers for Greater Than", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPCMPGTD", AliasOf: "", Summary: "Compare Packed Signed Doubleword Integers for Greater Than", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPCMPGTQ", AliasOf: "", Summary: "Compare Packed Data for Greater Than", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPCMPGTW", AliasOf: "", Summary: "Compare Packed Signed Word Integers for Greater Than", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPCMPISTRI", AliasOf: "", Summary: "Packed Compare Implicit Length Strings, Return Index", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "ecx", Action: 0x2}}}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "ecx", Action: 0x2}}}}}, inst.Instruction{Opcode: "VPCMPISTRM", AliasOf: "", Summary: "Packed Compare Implicit Length Strings, Return Mask", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "xmm0", Action: 0x2}}}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "xmm0", Action: 0x2}}}}}, inst.Instruction{Opcode: "VPERM2F128", AliasOf: "", Summary: "Permute Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPERM2I128", AliasOf: "", Summary: "Permute 128-Bit Integer Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPERMD", AliasOf: "", Summary: "Permute Doubleword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPERMILPD", AliasOf: "", Summary: "Permute Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPERMILPS", AliasOf: "", Summary: "Permute Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPERMPD", AliasOf: "", Summary: "Permute Double-Precision Floating-Point Elements", Forms: []inst.Form{inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPERMPS", AliasOf: "", Summary: "Permute Single-Precision Floating-Point Elements", Forms: []inst.Form{inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPERMQ", AliasOf: "", Summary: "Permute Quadword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPEXTRB", AliasOf: "", Summary: "Extract Byte", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPEXTRD", AliasOf: "", Summary: "Extract Doubleword", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPEXTRQ", AliasOf: "", Summary: "Extract Quadword", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPEXTRW", AliasOf: "", Summary: "Extract Word", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m16", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPGATHERDD", AliasOf: "", Summary: "Gather Packed Doubleword Values Using Signed Doubleword Indices", Forms: []inst.Form{inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x3}, inst.Operand{Type: "vm32x", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x3}, inst.Operand{Type: "vm32y", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPGATHERDQ", AliasOf: "", Summary: "Gather Packed Quadword Values Using Signed Doubleword Indices", Forms: []inst.Form{inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x3}, inst.Operand{Type: "vm32x", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x3}, inst.Operand{Type: "vm32x", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPGATHERQD", AliasOf: "", Summary: "Gather Packed Doubleword Values Using Signed Quadword Indices", Forms: []inst.Form{inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x3}, inst.Operand{Type: "vm64x", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x3}, inst.Operand{Type: "vm64y", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPGATHERQQ", AliasOf: "", Summary: "Gather Packed Quadword Values Using Signed Quadword Indices", Forms: []inst.Form{inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x3}, inst.Operand{Type: "vm64x", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x3}, inst.Operand{Type: "vm64y", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPHADDD", AliasOf: "", Summary: "Packed Horizontal Add Doubleword Integer", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPHADDSW", AliasOf: "", Summary: "Packed Horizontal Add Signed Word Integers with Signed Saturation", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPHADDW", AliasOf: "", Summary: "Packed Horizontal Add Word Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPHMINPOSUW", AliasOf: "", Summary: "Packed Horizontal Minimum of Unsigned Word Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPHSUBD", AliasOf: "", Summary: "Packed Horizontal Subtract Doubleword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPHSUBSW", AliasOf: "", Summary: "Packed Horizontal Subtract Signed Word Integers with Signed Saturation", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPHSUBW", AliasOf: "", Summary: "Packed Horizontal Subtract Word Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPINSRB", AliasOf: "", Summary: "Insert Byte", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m8", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPINSRD", AliasOf: "", Summary: "Insert Doubleword", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPINSRQ", AliasOf: "", Summary: "Insert Quadword", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPINSRW", AliasOf: "", Summary: "Insert Word", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMADDUBSW", AliasOf: "", Summary: "Multiply and Add Packed Signed and Unsigned Byte Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMADDWD", AliasOf: "", Summary: "Multiply and Add Packed Signed Word Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMASKMOVD", AliasOf: "", Summary: "Conditional Move Packed Doubleword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "m256", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMASKMOVQ", AliasOf: "", Summary: "Conditional Move Packed Quadword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "m256", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMAXSB", AliasOf: "", Summary: "Maximum of Packed Signed Byte Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMAXSD", AliasOf: "", Summary: "Maximum of Packed Signed Doubleword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMAXSW", AliasOf: "", Summary: "Maximum of Packed Signed Word Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMAXUB", AliasOf: "", Summary: "Maximum of Packed Unsigned Byte Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMAXUD", AliasOf: "", Summary: "Maximum of Packed Unsigned Doubleword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMAXUW", AliasOf: "", Summary: "Maximum of Packed Unsigned Word Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMINSB", AliasOf: "", Summary: "Minimum of Packed Signed Byte Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMINSD", AliasOf: "", Summary: "Minimum of Packed Signed Doubleword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMINSW", AliasOf: "", Summary: "Minimum of Packed Signed Word Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMINUB", AliasOf: "", Summary: "Minimum of Packed Unsigned Byte Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMINUD", AliasOf: "", Summary: "Minimum of Packed Unsigned Doubleword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMINUW", AliasOf: "", Summary: "Minimum of Packed Unsigned Word Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMOVMSKB", AliasOf: "", Summary: "Move Byte Mask", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMOVSXBD", AliasOf: "", Summary: "Move Packed Byte Integers to Doubleword Integers with Sign Extension", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMOVSXBQ", AliasOf: "", Summary: "Move Packed Byte Integers to Quadword Integers with Sign Extension", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMOVSXBW", AliasOf: "", Summary: "Move Packed Byte Integers to Word Integers with Sign Extension", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMOVSXDQ", AliasOf: "", Summary: "Move Packed Doubleword Integers to Quadword Integers with Sign Extension", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMOVSXWD", AliasOf: "", Summary: "Move Packed Word Integers to Doubleword Integers with Sign Extension", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMOVSXWQ", AliasOf: "", Summary: "Move Packed Word Integers to Quadword Integers with Sign Extension", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMOVZXBD", AliasOf: "", Summary: "Move Packed Byte Integers to Doubleword Integers with Zero Extension", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMOVZXBQ", AliasOf: "", Summary: "Move Packed Byte Integers to Quadword Integers with Zero Extension", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMOVZXBW", AliasOf: "", Summary: "Move Packed Byte Integers to Word Integers with Zero Extension", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMOVZXDQ", AliasOf: "", Summary: "Move Packed Doubleword Integers to Quadword Integers with Zero Extension", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMOVZXWD", AliasOf: "", Summary: "Move Packed Word Integers to Doubleword Integers with Zero Extension", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMOVZXWQ", AliasOf: "", Summary: "Move Packed Word Integers to Quadword Integers with Zero Extension", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMULDQ", AliasOf: "", Summary: "Multiply Packed Signed Doubleword Integers and Store Quadword Result", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMULHRSW", AliasOf: "", Summary: "Packed Multiply Signed Word Integers and Store High Result with Round and Scale", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMULHUW", AliasOf: "", Summary: "Multiply Packed Unsigned Word Integers and Store High Result", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMULHW", AliasOf: "", Summary: "Multiply Packed Signed Word Integers and Store High Result", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMULLD", AliasOf: "", Summary: "Multiply Packed Signed Doubleword Integers and Store Low Result", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMULLW", AliasOf: "", Summary: "Multiply Packed Signed Word Integers and Store Low Result", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMULUDQ", AliasOf: "", Summary: "Multiply Packed Unsigned Doubleword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPOR", AliasOf: "", Summary: "Packed Bitwise Logical OR", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSADBW", AliasOf: "", Summary: "Compute Sum of Absolute Differences", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSHUFB", AliasOf: "", Summary: "Packed Shuffle Bytes", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSHUFD", AliasOf: "", Summary: "Shuffle Packed Doublewords", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSHUFHW", AliasOf: "", Summary: "Shuffle Packed High Words", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSHUFLW", AliasOf: "", Summary: "Shuffle Packed Low Words", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSIGNB", AliasOf: "", Summary: "Packed Sign of Byte Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSIGND", AliasOf: "", Summary: "Packed Sign of Doubleword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSIGNW", AliasOf: "", Summary: "Packed Sign of Word Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSLLD", AliasOf: "", Summary: "Shift Packed Doubleword Data Left Logical", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSLLDQ", AliasOf: "", Summary: "Shift Packed Double Quadword Left Logical", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSLLQ", AliasOf: "", Summary: "Shift Packed Quadword Data Left Logical", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSLLVD", AliasOf: "", Summary: "Variable Shift Packed Doubleword Data Left Logical", Forms: []inst.Form{inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSLLVQ", AliasOf: "", Summary: "Variable Shift Packed Quadword Data Left Logical", Forms: []inst.Form{inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSLLW", AliasOf: "", Summary: "Shift Packed Word Data Left Logical", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSRAD", AliasOf: "", Summary: "Shift Packed Doubleword Data Right Arithmetic", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSRAVD", AliasOf: "", Summary: "Variable Shift Packed Doubleword Data Right Arithmetic", Forms: []inst.Form{inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSRAW", AliasOf: "", Summary: "Shift Packed Word Data Right Arithmetic", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSRLD", AliasOf: "", Summary: "Shift Packed Doubleword Data Right Logical", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSRLDQ", AliasOf: "", Summary: "Shift Packed Double Quadword Right Logical", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSRLQ", AliasOf: "", Summary: "Shift Packed Quadword Data Right Logical", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSRLVD", AliasOf: "", Summary: "Variable Shift Packed Doubleword Data Right Logical", Forms: []inst.Form{inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSRLVQ", AliasOf: "", Summary: "Variable Shift Packed Quadword Data Right Logical", Forms: []inst.Form{inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSRLW", AliasOf: "", Summary: "Shift Packed Word Data Right Logical", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSUBB", AliasOf: "", Summary: "Subtract Packed Byte Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSUBD", AliasOf: "", Summary: "Subtract Packed Doubleword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSUBQ", AliasOf: "", Summary: "Subtract Packed Quadword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSUBSB", AliasOf: "", Summary: "Subtract Packed Signed Byte Integers with Signed Saturation", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSUBSW", AliasOf: "", Summary: "Subtract Packed Signed Word Integers with Signed Saturation", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSUBUSB", AliasOf: "", Summary: "Subtract Packed Unsigned Byte Integers with Unsigned Saturation", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSUBUSW", AliasOf: "", Summary: "Subtract Packed Unsigned Word Integers with Unsigned Saturation", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSUBW", AliasOf: "", Summary: "Subtract Packed Word Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPTEST", AliasOf: "", Summary: "Packed Logical Compare", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPUNPCKHBW", AliasOf: "", Summary: "Unpack and Interleave High-Order Bytes into Words", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPUNPCKHDQ", AliasOf: "", Summary: "Unpack and Interleave High-Order Doublewords into Quadwords", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPUNPCKHQDQ", AliasOf: "", Summary: "Unpack and Interleave High-Order Quadwords into Double Quadwords", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPUNPCKHWD", AliasOf: "", Summary: "Unpack and Interleave High-Order Words into Doublewords", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPUNPCKLBW", AliasOf: "", Summary: "Unpack and Interleave Low-Order Bytes into Words", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPUNPCKLDQ", AliasOf: "", Summary: "Unpack and Interleave Low-Order Doublewords into Quadwords", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPUNPCKLQDQ", AliasOf: "", Summary: "Unpack and Interleave Low-Order Quadwords into Double Quadwords", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPUNPCKLWD", AliasOf: "", Summary: "Unpack and Interleave Low-Order Words into Doublewords", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPXOR", AliasOf: "", Summary: "Packed Bitwise Logical Exclusive OR", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VRCPPS", AliasOf: "", Summary: "Compute Approximate Reciprocals of Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VRCPSS", AliasOf: "", Summary: "Compute Approximate Reciprocal of Scalar Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VROUNDPD", AliasOf: "", Summary: "Round Packed Double Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VROUNDPS", AliasOf: "", Summary: "Round Packed Single Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VROUNDSD", AliasOf: "", Summary: "Round Scalar Double Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VROUNDSS", AliasOf: "", Summary: "Round Scalar Single Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VRSQRTPS", AliasOf: "", Summary: "Compute Reciprocals of Square Roots of Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VRSQRTSS", AliasOf: "", Summary: "Compute Reciprocal of Square Root of Scalar Single-Precision Floating-Point Value", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VSHUFPD", AliasOf: "", Summary: "Shuffle Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VSHUFPS", AliasOf: "", Summary: "Shuffle Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VSQRTPD", AliasOf: "", Summary: "Compute Square Roots of Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VSQRTPS", AliasOf: "", Summary: "Compute Square Roots of Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VSQRTSD", AliasOf: "", Summary: "Compute Square Root of Scalar Double-Precision Floating-Point Value", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VSQRTSS", AliasOf: "", Summary: "Compute Square Root of Scalar Single-Precision Floating-Point Value", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VSTMXCSR", AliasOf: "", Summary: "Store MXCSR Register State", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VSUBPD", AliasOf: "", Summary: "Subtract Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VSUBPS", AliasOf: "", Summary: "Subtract Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VSUBSD", AliasOf: "", Summary: "Subtract Scalar Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VSUBSS", AliasOf: "", Summary: "Subtract Scalar Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VTESTPD", AliasOf: "", Summary: "Packed Double-Precision Floating-Point Bit Test", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VTESTPS", AliasOf: "", Summary: "Packed Single-Precision Floating-Point Bit Test", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VUCOMISD", AliasOf: "", Summary: "Unordered Compare Scalar Double-Precision Floating-Point Values and Set EFLAGS", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VUCOMISS", AliasOf: "", Summary: "Unordered Compare Scalar Single-Precision Floating-Point Values and Set EFLAGS", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VUNPCKHPD", AliasOf: "", Summary: "Unpack and Interleave High Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VUNPCKHPS", AliasOf: "", Summary: "Unpack and Interleave High Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VUNPCKLPD", AliasOf: "", Summary: "Unpack and Interleave Low Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VUNPCKLPS", AliasOf: "", Summary: "Unpack and Interleave Low Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VXORPD", AliasOf: "", Summary: "Bitwise Logical XOR for Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VXORPS", AliasOf: "", Summary: "Bitwise Logical XOR for Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VZEROALL", AliasOf: "", Summary: "Zero All YMM Registers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VZEROUPPER", AliasOf: "", Summary: "Zero Upper Bits of YMM Registers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "XADDB", AliasOf: "", Summary: "Exchange and Add", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x3}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x3}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "XADDL", AliasOf: "", Summary: "Exchange and Add", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x3}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x3}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "XADDQ", AliasOf: "", Summary: "Exchange and Add", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x3}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x3}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "XADDW", AliasOf: "", Summary: "Exchange and Add", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x3}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x3}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "XCHGB", AliasOf: "", Summary: "Exchange Register/Memory with Register", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x3}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x3}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x3}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "XCHGL", AliasOf: "", Summary: "Exchange Register/Memory with Register", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x3}, inst.Operand{Type: "eax", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "eax", Action: 0x3}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x3}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x3}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x3}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "XCHGQ", AliasOf: "", Summary: "Exchange Register/Memory with Register", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x3}, inst.Operand{Type: "rax", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rax", Action: 0x3}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x3}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x3}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x3}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "XCHGW", AliasOf: "", Summary: "Exchange Register/Memory with Register", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x3}, inst.Operand{Type: "ax", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "ax", Action: 0x3}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x3}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x3}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x3}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "XGETBV", AliasOf: "", Summary: "Get Value of Extended Control Register", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "eax", Action: 0x2}, inst.ImplicitOperand{Register: "ecx", Action: 0x1}, inst.ImplicitOperand{Register: "edx", Action: 0x2}}}}}, inst.Instruction{Opcode: "XLAT", AliasOf: "", Summary: "Table Look-up Translation", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "al", Action: 0x3}, inst.ImplicitOperand{Register: "ebx", Action: 0x1}}}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "al", Action: 0x3}, inst.ImplicitOperand{Register: "rbx", Action: 0x1}}}}}, inst.Instruction{Opcode: "XORB", AliasOf: "", Summary: "Logical Exclusive OR", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "al", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x1}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "XORL", AliasOf: "", Summary: "Logical Exclusive OR", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "eax", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "XORPD", AliasOf: "", Summary: "Bitwise Logical XOR for Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "XORPS", AliasOf: "", Summary: "Bitwise Logical XOR for Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "XORQ", AliasOf: "", Summary: "Logical Exclusive OR", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "rax", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "XORW", AliasOf: "", Summary: "Logical Exclusive OR", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}, inst.Operand{Type: "ax", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}} +var raw = []inst.Instruction{inst.Instruction{Opcode: "ADCB", AliasOf: "", Summary: "Add with Carry", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "al", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x1}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ADCL", AliasOf: "", Summary: "Add with Carry", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "eax", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ADCQ", AliasOf: "", Summary: "Add with Carry", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "rax", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ADCW", AliasOf: "", Summary: "Add with Carry", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}, inst.Operand{Type: "ax", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ADCXL", AliasOf: "", Summary: "Unsigned Integer Addition of Two Operands with Carry Flag", Forms: []inst.Form{inst.Form{ISA: []string{"ADX"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"ADX"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ADCXQ", AliasOf: "", Summary: "Unsigned Integer Addition of Two Operands with Carry Flag", Forms: []inst.Form{inst.Form{ISA: []string{"ADX"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"ADX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ADDB", AliasOf: "", Summary: "Add", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "al", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x1}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ADDL", AliasOf: "", Summary: "Add", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "eax", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ADDPD", AliasOf: "", Summary: "Add Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ADDPS", AliasOf: "", Summary: "Add Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ADDQ", AliasOf: "", Summary: "Add", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "rax", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ADDSD", AliasOf: "", Summary: "Add Scalar Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ADDSS", AliasOf: "", Summary: "Add Scalar Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ADDSUBPD", AliasOf: "", Summary: "Packed Double-FP Add/Subtract", Forms: []inst.Form{inst.Form{ISA: []string{"SSE3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ADDSUBPS", AliasOf: "", Summary: "Packed Single-FP Add/Subtract", Forms: []inst.Form{inst.Form{ISA: []string{"SSE3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ADDW", AliasOf: "", Summary: "Add", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}, inst.Operand{Type: "ax", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ADOXL", AliasOf: "", Summary: "Unsigned Integer Addition of Two Operands with Overflow Flag", Forms: []inst.Form{inst.Form{ISA: []string{"ADX"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"ADX"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ADOXQ", AliasOf: "", Summary: "Unsigned Integer Addition of Two Operands with Overflow Flag", Forms: []inst.Form{inst.Form{ISA: []string{"ADX"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"ADX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "AESDEC", AliasOf: "", Summary: "Perform One Round of an AES Decryption Flow", Forms: []inst.Form{inst.Form{ISA: []string{"AES"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AES"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "AESDECLAST", AliasOf: "", Summary: "Perform Last Round of an AES Decryption Flow", Forms: []inst.Form{inst.Form{ISA: []string{"AES"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AES"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "AESENC", AliasOf: "", Summary: "Perform One Round of an AES Encryption Flow", Forms: []inst.Form{inst.Form{ISA: []string{"AES"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AES"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "AESENCLAST", AliasOf: "", Summary: "Perform Last Round of an AES Encryption Flow", Forms: []inst.Form{inst.Form{ISA: []string{"AES"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AES"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "AESIMC", AliasOf: "", Summary: "Perform the AES InvMixColumn Transformation", Forms: []inst.Form{inst.Form{ISA: []string{"AES"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AES"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "AESKEYGENASSIST", AliasOf: "", Summary: "AES Round Key Generation Assist", Forms: []inst.Form{inst.Form{ISA: []string{"AES"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AES"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ANDB", AliasOf: "", Summary: "Logical AND", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "al", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x1}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ANDL", AliasOf: "", Summary: "Logical AND", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "eax", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ANDNL", AliasOf: "", Summary: "Logical AND NOT", Forms: []inst.Form{inst.Form{ISA: []string{"BMI"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"BMI"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ANDNPD", AliasOf: "", Summary: "Bitwise Logical AND NOT of Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ANDNPS", AliasOf: "", Summary: "Bitwise Logical AND NOT of Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ANDNQ", AliasOf: "", Summary: "Logical AND NOT", Forms: []inst.Form{inst.Form{ISA: []string{"BMI"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"BMI"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ANDPD", AliasOf: "", Summary: "Bitwise Logical AND of Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ANDPS", AliasOf: "", Summary: "Bitwise Logical AND of Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ANDQ", AliasOf: "", Summary: "Logical AND", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "rax", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ANDW", AliasOf: "", Summary: "Logical AND", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}, inst.Operand{Type: "ax", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BEXTRL", AliasOf: "", Summary: "Bit Field Extract", Forms: []inst.Form{inst.Form{ISA: []string{"BMI"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"BMI"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BEXTRQ", AliasOf: "", Summary: "Bit Field Extract", Forms: []inst.Form{inst.Form{ISA: []string{"BMI"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"BMI"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BLENDPD", AliasOf: "", Summary: "Blend Packed Double Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BLENDPS", AliasOf: "", Summary: " Blend Packed Single Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BLENDVPD", AliasOf: "", Summary: " Variable Blend Packed Double Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm0", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm0", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BLENDVPS", AliasOf: "", Summary: " Variable Blend Packed Single Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm0", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm0", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BLSIL", AliasOf: "", Summary: "Isolate Lowest Set Bit", Forms: []inst.Form{inst.Form{ISA: []string{"BMI"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"BMI"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BLSIQ", AliasOf: "", Summary: "Isolate Lowest Set Bit", Forms: []inst.Form{inst.Form{ISA: []string{"BMI"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"BMI"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BLSMSKL", AliasOf: "", Summary: "Mask From Lowest Set Bit", Forms: []inst.Form{inst.Form{ISA: []string{"BMI"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"BMI"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BLSMSKQ", AliasOf: "", Summary: "Mask From Lowest Set Bit", Forms: []inst.Form{inst.Form{ISA: []string{"BMI"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"BMI"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BLSRL", AliasOf: "", Summary: "Reset Lowest Set Bit", Forms: []inst.Form{inst.Form{ISA: []string{"BMI"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"BMI"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BLSRQ", AliasOf: "", Summary: "Reset Lowest Set Bit", Forms: []inst.Form{inst.Form{ISA: []string{"BMI"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"BMI"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BSFL", AliasOf: "", Summary: "Bit Scan Forward", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BSFQ", AliasOf: "", Summary: "Bit Scan Forward", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BSFW", AliasOf: "", Summary: "Bit Scan Forward", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BSRL", AliasOf: "", Summary: "Bit Scan Reverse", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BSRQ", AliasOf: "", Summary: "Bit Scan Reverse", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BSRW", AliasOf: "", Summary: "Bit Scan Reverse", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BSWAPL", AliasOf: "", Summary: "Byte Swap", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BSWAPQ", AliasOf: "", Summary: "Byte Swap", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BTCL", AliasOf: "", Summary: "Bit Test and Complement", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BTCQ", AliasOf: "", Summary: "Bit Test and Complement", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BTCW", AliasOf: "", Summary: "Bit Test and Complement", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BTL", AliasOf: "", Summary: "Bit Test", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BTQ", AliasOf: "", Summary: "Bit Test", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BTRL", AliasOf: "", Summary: "Bit Test and Reset", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BTRQ", AliasOf: "", Summary: "Bit Test and Reset", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BTRW", AliasOf: "", Summary: "Bit Test and Reset", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BTSL", AliasOf: "", Summary: "Bit Test and Set", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BTSQ", AliasOf: "", Summary: "Bit Test and Set", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BTSW", AliasOf: "", Summary: "Bit Test and Set", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BTW", AliasOf: "", Summary: "Bit Test", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "m16", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BZHIL", AliasOf: "", Summary: "Zero High Bits Starting with Specified Bit Position", Forms: []inst.Form{inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "BZHIQ", AliasOf: "", Summary: "Zero High Bits Starting with Specified Bit Position", Forms: []inst.Form{inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CALL", AliasOf: "", Summary: "Call Procedure", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CBW", AliasOf: "", Summary: "Convert Byte to Word", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "ax", Action: 0x2}, inst.ImplicitOperand{Register: "al", Action: 0x1}}}}}, inst.Instruction{Opcode: "CDQ", AliasOf: "", Summary: "Convert Doubleword to Quadword", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "eax", Action: 0x1}, inst.ImplicitOperand{Register: "edx", Action: 0x2}}}}}, inst.Instruction{Opcode: "CDQE", AliasOf: "", Summary: "Convert Doubleword to Quadword", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "eax", Action: 0x1}, inst.ImplicitOperand{Register: "rax", Action: 0x2}}}}}, inst.Instruction{Opcode: "CLC", AliasOf: "", Summary: "Clear Carry Flag", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CLD", AliasOf: "", Summary: "Clear Direction Flag", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CLFLUSH", AliasOf: "", Summary: "Flush Cache Line", Forms: []inst.Form{inst.Form{ISA: []string{"CLFLUSH"}, Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CLFLUSHOPT", AliasOf: "", Summary: "Flush Cache Line Optimized", Forms: []inst.Form{inst.Form{ISA: []string{"CLFLUSHOPT"}, Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMC", AliasOf: "", Summary: "Complement Carry Flag", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVLCC", AliasOf: "", Summary: "Move if above or equal (CF == 0)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVLCS", AliasOf: "", Summary: "Move if below (CF == 1)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVLEQ", AliasOf: "", Summary: "Move if equal (ZF == 1)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVLGE", AliasOf: "", Summary: "Move if greater or equal (SF == OF)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVLGT", AliasOf: "", Summary: "Move if greater (ZF == 0 and SF == OF)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVLHI", AliasOf: "", Summary: "Move if above (CF == 0 and ZF == 0)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVLLE", AliasOf: "", Summary: "Move if less or equal (ZF == 1 or SF != OF)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVLLS", AliasOf: "", Summary: "Move if below or equal (CF == 1 or ZF == 1)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVLLT", AliasOf: "", Summary: "Move if less (SF != OF)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVLMI", AliasOf: "", Summary: "Move if sign (SF == 1)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVLNE", AliasOf: "", Summary: "Move if not equal (ZF == 0)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVLOC", AliasOf: "", Summary: "Move if not overflow (OF == 0)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVLOS", AliasOf: "", Summary: "Move if overflow (OF == 1)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVLPC", AliasOf: "", Summary: "Move if not parity (PF == 0)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVLPL", AliasOf: "", Summary: "Move if not sign (SF == 0)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVLPS", AliasOf: "", Summary: "Move if parity (PF == 1)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVQCC", AliasOf: "", Summary: "Move if above or equal (CF == 0)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVQCS", AliasOf: "", Summary: "Move if below (CF == 1)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVQEQ", AliasOf: "", Summary: "Move if equal (ZF == 1)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVQGE", AliasOf: "", Summary: "Move if greater or equal (SF == OF)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVQGT", AliasOf: "", Summary: "Move if greater (ZF == 0 and SF == OF)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVQHI", AliasOf: "", Summary: "Move if above (CF == 0 and ZF == 0)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVQLE", AliasOf: "", Summary: "Move if less or equal (ZF == 1 or SF != OF)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVQLS", AliasOf: "", Summary: "Move if below or equal (CF == 1 or ZF == 1)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVQLT", AliasOf: "", Summary: "Move if less (SF != OF)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVQMI", AliasOf: "", Summary: "Move if sign (SF == 1)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVQNE", AliasOf: "", Summary: "Move if not equal (ZF == 0)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVQOC", AliasOf: "", Summary: "Move if not overflow (OF == 0)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVQOS", AliasOf: "", Summary: "Move if overflow (OF == 1)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVQPC", AliasOf: "", Summary: "Move if not parity (PF == 0)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVQPL", AliasOf: "", Summary: "Move if not sign (SF == 0)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVQPS", AliasOf: "", Summary: "Move if parity (PF == 1)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVWCC", AliasOf: "", Summary: "Move if above or equal (CF == 0)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVWCS", AliasOf: "", Summary: "Move if below (CF == 1)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVWEQ", AliasOf: "", Summary: "Move if equal (ZF == 1)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVWGE", AliasOf: "", Summary: "Move if greater or equal (SF == OF)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVWGT", AliasOf: "", Summary: "Move if greater (ZF == 0 and SF == OF)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVWHI", AliasOf: "", Summary: "Move if above (CF == 0 and ZF == 0)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVWLE", AliasOf: "", Summary: "Move if less or equal (ZF == 1 or SF != OF)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVWLS", AliasOf: "", Summary: "Move if below or equal (CF == 1 or ZF == 1)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVWLT", AliasOf: "", Summary: "Move if less (SF != OF)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVWMI", AliasOf: "", Summary: "Move if sign (SF == 1)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVWNE", AliasOf: "", Summary: "Move if not equal (ZF == 0)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVWOC", AliasOf: "", Summary: "Move if not overflow (OF == 0)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVWOS", AliasOf: "", Summary: "Move if overflow (OF == 1)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVWPC", AliasOf: "", Summary: "Move if not parity (PF == 0)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVWPL", AliasOf: "", Summary: "Move if not sign (SF == 0)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMOVWPS", AliasOf: "", Summary: "Move if parity (PF == 1)", Forms: []inst.Form{inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"CMOV"}, Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMPB", AliasOf: "", Summary: "Compare Two Operands", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "al", Action: 0x1}, inst.Operand{Type: "imm8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "imm8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "r8", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "m8", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x1}, inst.Operand{Type: "imm8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x1}, inst.Operand{Type: "r8", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMPL", AliasOf: "", Summary: "Compare Two Operands", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "eax", Action: 0x1}, inst.Operand{Type: "imm32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "imm8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "imm32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "imm8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "imm32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMPPD", AliasOf: "", Summary: "Compare Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}, inst.Operand{Type: "imm8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}, inst.Operand{Type: "imm8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMPPS", AliasOf: "", Summary: "Compare Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}, inst.Operand{Type: "imm8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}, inst.Operand{Type: "imm8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMPQ", AliasOf: "", Summary: "Compare Two Operands", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rax", Action: 0x1}, inst.Operand{Type: "imm32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "imm8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "imm32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "imm8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "imm32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMPSD", AliasOf: "", Summary: "Compare Scalar Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}, inst.Operand{Type: "imm8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}, inst.Operand{Type: "imm8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMPSS", AliasOf: "", Summary: "Compare Scalar Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}, inst.Operand{Type: "imm8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}, inst.Operand{Type: "imm8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMPW", AliasOf: "", Summary: "Compare Two Operands", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "ax", Action: 0x1}, inst.Operand{Type: "imm16", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "imm8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "imm16", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "m16", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "imm8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "imm16", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMPXCHG16B", AliasOf: "", Summary: "Compare and Exchange 16 Bytes", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "rax", Action: 0x3}, inst.ImplicitOperand{Register: "rbx", Action: 0x1}, inst.ImplicitOperand{Register: "rcx", Action: 0x1}, inst.ImplicitOperand{Register: "rdx", Action: 0x3}}}}}, inst.Instruction{Opcode: "CMPXCHG8B", AliasOf: "", Summary: "Compare and Exchange 8 Bytes", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "eax", Action: 0x3}, inst.ImplicitOperand{Register: "ebx", Action: 0x1}, inst.ImplicitOperand{Register: "ecx", Action: 0x1}, inst.ImplicitOperand{Register: "edx", Action: 0x3}}}}}, inst.Instruction{Opcode: "CMPXCHGB", AliasOf: "", Summary: "Compare and Exchange", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMPXCHGL", AliasOf: "", Summary: "Compare and Exchange", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMPXCHGQ", AliasOf: "", Summary: "Compare and Exchange", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CMPXCHGW", AliasOf: "", Summary: "Compare and Exchange", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "COMISD", AliasOf: "", Summary: "Compare Scalar Ordered Double-Precision Floating-Point Values and Set EFLAGS", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "COMISS", AliasOf: "", Summary: "Compare Scalar Ordered Single-Precision Floating-Point Values and Set EFLAGS", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CPUID", AliasOf: "", Summary: "CPU Identification", Forms: []inst.Form{inst.Form{ISA: []string{"CPUID"}, Operands: []inst.Operand{}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "eax", Action: 0x3}, inst.ImplicitOperand{Register: "ebx", Action: 0x2}, inst.ImplicitOperand{Register: "ecx", Action: 0x3}, inst.ImplicitOperand{Register: "edx", Action: 0x2}}}}}, inst.Instruction{Opcode: "CQO", AliasOf: "", Summary: "Convert Quadword to Octaword", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "rax", Action: 0x1}, inst.ImplicitOperand{Register: "rdx", Action: 0x2}}}}}, inst.Instruction{Opcode: "CRC32B", AliasOf: "", Summary: "Accumulate CRC32 Value", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.2"}, Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.2"}, Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.2"}, Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.2"}, Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CRC32L", AliasOf: "", Summary: "Accumulate CRC32 Value", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.2"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.2"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CRC32Q", AliasOf: "", Summary: "Accumulate CRC32 Value", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.2"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CRC32W", AliasOf: "", Summary: "Accumulate CRC32 Value", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.2"}, Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.2"}, Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CVTPD2PL", AliasOf: "", Summary: "Convert Packed Double-Precision FP Values to Packed Dword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CVTPD2PS", AliasOf: "", Summary: "Convert Packed Double-Precision FP Values to Packed Single-Precision FP Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CVTPL2PD", AliasOf: "", Summary: "Convert Packed Dword Integers to Packed Double-Precision FP Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CVTPL2PS", AliasOf: "", Summary: "Convert Packed Dword Integers to Packed Single-Precision FP Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CVTPS2PD", AliasOf: "", Summary: "Convert Packed Single-Precision FP Values to Packed Double-Precision FP Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CVTPS2PL", AliasOf: "", Summary: "Convert Packed Single-Precision FP Values to Packed Dword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CVTSD2SL", AliasOf: "", Summary: "Convert Scalar Double-Precision FP Value to Integer", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CVTSD2SS", AliasOf: "", Summary: "Convert Scalar Double-Precision FP Value to Scalar Single-Precision FP Value", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CVTSL2SD", AliasOf: "", Summary: "Convert Dword Integer to Scalar Double-Precision FP Value", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CVTSL2SS", AliasOf: "", Summary: "Convert Dword Integer to Scalar Single-Precision FP Value", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CVTSQ2SD", AliasOf: "", Summary: "Convert Dword Integer to Scalar Double-Precision FP Value", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CVTSQ2SS", AliasOf: "", Summary: "Convert Dword Integer to Scalar Single-Precision FP Value", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CVTSS2SD", AliasOf: "", Summary: "Convert Scalar Single-Precision FP Value to Scalar Double-Precision FP Value", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CVTSS2SL", AliasOf: "", Summary: "Convert Scalar Single-Precision FP Value to Dword Integer", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CVTTPD2PL", AliasOf: "", Summary: "Convert with Truncation Packed Double-Precision FP Values to Packed Dword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CVTTPS2PL", AliasOf: "", Summary: "Convert with Truncation Packed Single-Precision FP Values to Packed Dword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CVTTSD2SL", AliasOf: "", Summary: "Convert with Truncation Scalar Double-Precision FP Value to Signed Integer", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CVTTSD2SQ", AliasOf: "", Summary: "Convert with Truncation Scalar Double-Precision FP Value to Signed Integer", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CVTTSS2SL", AliasOf: "", Summary: "Convert with Truncation Scalar Single-Precision FP Value to Dword Integer", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "CWD", AliasOf: "", Summary: "Convert Word to Doubleword", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "ax", Action: 0x1}, inst.ImplicitOperand{Register: "dx", Action: 0x2}}}}}, inst.Instruction{Opcode: "CWDE", AliasOf: "", Summary: "Convert Word to Doubleword", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "ax", Action: 0x1}, inst.ImplicitOperand{Register: "eax", Action: 0x2}}}}}, inst.Instruction{Opcode: "DECB", AliasOf: "", Summary: "Decrement by 1", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "DECL", AliasOf: "", Summary: "Decrement by 1", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "DECQ", AliasOf: "", Summary: "Decrement by 1", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "DECW", AliasOf: "", Summary: "Decrement by 1", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "DIVB", AliasOf: "", Summary: "Unsigned Divide", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "ax", Action: 0x3}}}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "ax", Action: 0x3}}}}}, inst.Instruction{Opcode: "DIVL", AliasOf: "", Summary: "Unsigned Divide", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "eax", Action: 0x3}, inst.ImplicitOperand{Register: "edx", Action: 0x3}}}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "eax", Action: 0x3}, inst.ImplicitOperand{Register: "edx", Action: 0x3}}}}}, inst.Instruction{Opcode: "DIVPD", AliasOf: "", Summary: "Divide Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "DIVPS", AliasOf: "", Summary: "Divide Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "DIVQ", AliasOf: "", Summary: "Unsigned Divide", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "rax", Action: 0x3}, inst.ImplicitOperand{Register: "rdx", Action: 0x3}}}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "rax", Action: 0x3}, inst.ImplicitOperand{Register: "rdx", Action: 0x3}}}}}, inst.Instruction{Opcode: "DIVSD", AliasOf: "", Summary: "Divide Scalar Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "DIVSS", AliasOf: "", Summary: "Divide Scalar Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "DIVW", AliasOf: "", Summary: "Unsigned Divide", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "ax", Action: 0x3}, inst.ImplicitOperand{Register: "dx", Action: 0x3}}}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "ax", Action: 0x3}, inst.ImplicitOperand{Register: "dx", Action: 0x3}}}}}, inst.Instruction{Opcode: "DPPD", AliasOf: "", Summary: "Dot Product of Packed Double Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "DPPS", AliasOf: "", Summary: "Dot Product of Packed Single Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "EXTRACTPS", AliasOf: "", Summary: "Extract Packed Single Precision Floating-Point Value", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm2u", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm2u", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "HADDPD", AliasOf: "", Summary: "Packed Double-FP Horizontal Add", Forms: []inst.Form{inst.Form{ISA: []string{"SSE3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "HADDPS", AliasOf: "", Summary: "Packed Single-FP Horizontal Add", Forms: []inst.Form{inst.Form{ISA: []string{"SSE3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "HSUBPD", AliasOf: "", Summary: "Packed Double-FP Horizontal Subtract", Forms: []inst.Form{inst.Form{ISA: []string{"SSE3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "HSUBPS", AliasOf: "", Summary: "Packed Single-FP Horizontal Subtract", Forms: []inst.Form{inst.Form{ISA: []string{"SSE3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "IDIVB", AliasOf: "", Summary: "Signed Divide", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "ax", Action: 0x3}}}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "ax", Action: 0x3}}}}}, inst.Instruction{Opcode: "IDIVL", AliasOf: "", Summary: "Signed Divide", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "eax", Action: 0x3}, inst.ImplicitOperand{Register: "edx", Action: 0x3}}}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "eax", Action: 0x3}, inst.ImplicitOperand{Register: "edx", Action: 0x3}}}}}, inst.Instruction{Opcode: "IDIVQ", AliasOf: "", Summary: "Signed Divide", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "rax", Action: 0x3}, inst.ImplicitOperand{Register: "rdx", Action: 0x3}}}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "rax", Action: 0x3}, inst.ImplicitOperand{Register: "rdx", Action: 0x3}}}}}, inst.Instruction{Opcode: "IDIVW", AliasOf: "", Summary: "Signed Divide", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "ax", Action: 0x3}, inst.ImplicitOperand{Register: "dx", Action: 0x3}}}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "ax", Action: 0x3}, inst.ImplicitOperand{Register: "dx", Action: 0x3}}}}}, inst.Instruction{Opcode: "IMUL3L", AliasOf: "", Summary: "Signed Multiply", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "IMUL3Q", AliasOf: "", Summary: "Signed Multiply", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "IMUL3W", AliasOf: "", Summary: "Signed Multiply", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "IMULB", AliasOf: "", Summary: "Signed Multiply", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "ax", Action: 0x2}, inst.ImplicitOperand{Register: "al", Action: 0x1}}}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "ax", Action: 0x2}, inst.ImplicitOperand{Register: "al", Action: 0x1}}}}}, inst.Instruction{Opcode: "IMULL", AliasOf: "", Summary: "Signed Multiply", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "eax", Action: 0x3}, inst.ImplicitOperand{Register: "edx", Action: 0x2}}}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "eax", Action: 0x3}, inst.ImplicitOperand{Register: "edx", Action: 0x2}}}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "IMULQ", AliasOf: "", Summary: "Signed Multiply", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "rax", Action: 0x3}, inst.ImplicitOperand{Register: "rdx", Action: 0x2}}}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "rax", Action: 0x3}, inst.ImplicitOperand{Register: "rdx", Action: 0x2}}}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "IMULW", AliasOf: "", Summary: "Signed Multiply", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "ax", Action: 0x3}, inst.ImplicitOperand{Register: "dx", Action: 0x2}}}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "ax", Action: 0x3}, inst.ImplicitOperand{Register: "dx", Action: 0x2}}}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "INCB", AliasOf: "", Summary: "Increment by 1", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "INCL", AliasOf: "", Summary: "Increment by 1", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "INCQ", AliasOf: "", Summary: "Increment by 1", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "INCW", AliasOf: "", Summary: "Increment by 1", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "INSERTPS", AliasOf: "", Summary: "Insert Packed Single Precision Floating-Point Value", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "INT", AliasOf: "", Summary: "Call to Interrupt Procedure", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "3", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JA", AliasOf: "JHI", Summary: "Jump if above (CF == 0 and ZF == 0)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JAE", AliasOf: "JCC", Summary: "Jump if above or equal (CF == 0)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JB", AliasOf: "JCS", Summary: "Jump if below (CF == 1)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JBE", AliasOf: "JLS", Summary: "Jump if below or equal (CF == 1 or ZF == 1)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JC", AliasOf: "JCS", Summary: "Jump if below (CF == 1)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JCC", AliasOf: "", Summary: "Jump if above or equal (CF == 0)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JCS", AliasOf: "", Summary: "Jump if below (CF == 1)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JCXZL", AliasOf: "", Summary: "Jump if ECX register is 0", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "ecx", Action: 0x1}}}}}, inst.Instruction{Opcode: "JCXZQ", AliasOf: "", Summary: "Jump if RCX register is 0", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "rcx", Action: 0x1}}}}}, inst.Instruction{Opcode: "JE", AliasOf: "JEQ", Summary: "Jump if equal (ZF == 1)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JEQ", AliasOf: "", Summary: "Jump if equal (ZF == 1)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JG", AliasOf: "JGT", Summary: "Jump if greater (ZF == 0 and SF == OF)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JGE", AliasOf: "", Summary: "Jump if greater or equal (SF == OF)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JGT", AliasOf: "", Summary: "Jump if greater (ZF == 0 and SF == OF)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JHI", AliasOf: "", Summary: "Jump if above (CF == 0 and ZF == 0)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JHS", AliasOf: "JCC", Summary: "Jump if above or equal (CF == 0)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JL", AliasOf: "JLT", Summary: "Jump if less (SF != OF)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JLE", AliasOf: "", Summary: "Jump if less or equal (ZF == 1 or SF != OF)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JLO", AliasOf: "JCS", Summary: "Jump if below (CF == 1)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JLS", AliasOf: "", Summary: "Jump if below or equal (CF == 1 or ZF == 1)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JLT", AliasOf: "", Summary: "Jump if less (SF != OF)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JMI", AliasOf: "", Summary: "Jump if sign (SF == 1)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JMP", AliasOf: "", Summary: "Jump Unconditionally", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JNA", AliasOf: "JLS", Summary: "Jump if below or equal (CF == 1 or ZF == 1)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JNAE", AliasOf: "JCS", Summary: "Jump if below (CF == 1)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JNB", AliasOf: "JCC", Summary: "Jump if above or equal (CF == 0)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JNBE", AliasOf: "JHI", Summary: "Jump if above (CF == 0 and ZF == 0)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JNC", AliasOf: "JCC", Summary: "Jump if above or equal (CF == 0)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JNE", AliasOf: "", Summary: "Jump if not equal (ZF == 0)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JNG", AliasOf: "JLE", Summary: "Jump if less or equal (ZF == 1 or SF != OF)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JNGE", AliasOf: "JLT", Summary: "Jump if less (SF != OF)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JNL", AliasOf: "JGE", Summary: "Jump if greater or equal (SF == OF)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JNLE", AliasOf: "JGT", Summary: "Jump if greater (ZF == 0 and SF == OF)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JNO", AliasOf: "JOC", Summary: "Jump if not overflow (OF == 0)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JNP", AliasOf: "JPC", Summary: "Jump if not parity (PF == 0)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JNS", AliasOf: "JPL", Summary: "Jump if not sign (SF == 0)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JNZ", AliasOf: "JNE", Summary: "Jump if not equal (ZF == 0)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JO", AliasOf: "JOS", Summary: "Jump if overflow (OF == 1)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JOC", AliasOf: "", Summary: "Jump if not overflow (OF == 0)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JOS", AliasOf: "", Summary: "Jump if overflow (OF == 1)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JP", AliasOf: "JPS", Summary: "Jump if parity (PF == 1)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JPC", AliasOf: "", Summary: "Jump if not parity (PF == 0)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JPE", AliasOf: "JPS", Summary: "Jump if parity (PF == 1)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JPL", AliasOf: "", Summary: "Jump if not sign (SF == 0)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JPO", AliasOf: "JPC", Summary: "Jump if not parity (PF == 0)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JPS", AliasOf: "", Summary: "Jump if parity (PF == 1)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JS", AliasOf: "JMI", Summary: "Jump if sign (SF == 1)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "JZ", AliasOf: "JEQ", Summary: "Jump if equal (ZF == 1)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rel32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "LDDQU", AliasOf: "", Summary: "Load Unaligned Integer 128 Bits", Forms: []inst.Form{inst.Form{ISA: []string{"SSE3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "LDMXCSR", AliasOf: "", Summary: "Load MXCSR Register", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "LEAL", AliasOf: "", Summary: "Load Effective Address", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "LEAQ", AliasOf: "", Summary: "Load Effective Address", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "LEAW", AliasOf: "", Summary: "Load Effective Address", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "LFENCE", AliasOf: "", Summary: "Load Fence", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "LZCNTL", AliasOf: "", Summary: "Count the Number of Leading Zero Bits", Forms: []inst.Form{inst.Form{ISA: []string{"LZCNT"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"LZCNT"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "LZCNTQ", AliasOf: "", Summary: "Count the Number of Leading Zero Bits", Forms: []inst.Form{inst.Form{ISA: []string{"LZCNT"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"LZCNT"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "LZCNTW", AliasOf: "", Summary: "Count the Number of Leading Zero Bits", Forms: []inst.Form{inst.Form{ISA: []string{"LZCNT"}, Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"LZCNT"}, Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MASKMOVDQU", AliasOf: "MASKMOVOU", Summary: "Store Selected Bytes of Double Quadword", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "rdi", Action: 0x1}}}}}, inst.Instruction{Opcode: "MASKMOVOU", AliasOf: "", Summary: "Store Selected Bytes of Double Quadword", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "rdi", Action: 0x1}}}}}, inst.Instruction{Opcode: "MAXPD", AliasOf: "", Summary: "Return Maximum Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MAXPS", AliasOf: "", Summary: "Return Maximum Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MAXSD", AliasOf: "", Summary: "Return Maximum Scalar Double-Precision Floating-Point Value", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MAXSS", AliasOf: "", Summary: "Return Maximum Scalar Single-Precision Floating-Point Value", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MFENCE", AliasOf: "", Summary: "Memory Fence", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MINPD", AliasOf: "", Summary: "Return Minimum Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MINPS", AliasOf: "", Summary: "Return Minimum Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MINSD", AliasOf: "", Summary: "Return Minimum Scalar Double-Precision Floating-Point Value", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MINSS", AliasOf: "", Summary: "Return Minimum Scalar Single-Precision Floating-Point Value", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MONITOR", AliasOf: "", Summary: "Monitor a Linear Address Range", Forms: []inst.Form{inst.Form{ISA: []string{"MONITOR"}, Operands: []inst.Operand{}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "rax", Action: 0x1}, inst.ImplicitOperand{Register: "ecx", Action: 0x1}, inst.ImplicitOperand{Register: "edx", Action: 0x1}}}}}, inst.Instruction{Opcode: "MOVAPD", AliasOf: "", Summary: "Move Aligned Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVAPS", AliasOf: "", Summary: "Move Aligned Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVB", AliasOf: "", Summary: "Move", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "r8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x1}, inst.Operand{Type: "r8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "m8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVBELL", AliasOf: "", Summary: "Move Data After Swapping Bytes", Forms: []inst.Form{inst.Form{ISA: []string{"MOVBE"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"MOVBE"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVBEQQ", AliasOf: "", Summary: "Move Data After Swapping Bytes", Forms: []inst.Form{inst.Form{ISA: []string{"MOVBE"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"MOVBE"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVBEWW", AliasOf: "", Summary: "Move Data After Swapping Bytes", Forms: []inst.Form{inst.Form{ISA: []string{"MOVBE"}, Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"MOVBE"}, Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "m16", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVBLSX", AliasOf: "", Summary: "Move with Sign-Extension", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVBLZX", AliasOf: "", Summary: "Move with Zero-Extend", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVBQSX", AliasOf: "", Summary: "Move with Sign-Extension", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVBQZX", AliasOf: "", Summary: "Move with Zero-Extend", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVBWSX", AliasOf: "", Summary: "Move with Sign-Extension", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVBWZX", AliasOf: "", Summary: "Move with Zero-Extend", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVD", AliasOf: "MOVQ", Summary: "Move", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm64", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVDDUP", AliasOf: "", Summary: "Move One Double-FP and Duplicate", Forms: []inst.Form{inst.Form{ISA: []string{"SSE3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE3"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVDQ2Q", AliasOf: "MOVQ", Summary: "Move", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm64", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVHLPS", AliasOf: "", Summary: "Move Packed Single-Precision Floating-Point Values High to Low", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVHPD", AliasOf: "", Summary: "Move High Packed Double-Precision Floating-Point Value", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVHPS", AliasOf: "", Summary: "Move High Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVL", AliasOf: "", Summary: "Move", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVLHPS", AliasOf: "", Summary: "Move Packed Single-Precision Floating-Point Values Low to High", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVLPD", AliasOf: "", Summary: "Move Low Packed Double-Precision Floating-Point Value", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVLPS", AliasOf: "", Summary: "Move Low Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVLQSX", AliasOf: "", Summary: "Move Doubleword to Quadword with Sign-Extension", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVLQZX", AliasOf: "", Summary: "Move with Zero-Extend", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVMSKPD", AliasOf: "", Summary: "Extract Packed Double-Precision Floating-Point Sign Mask", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVMSKPS", AliasOf: "", Summary: "Extract Packed Single-Precision Floating-Point Sign Mask", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVNTDQ", AliasOf: "MOVNTO", Summary: "Store Double Quadword Using Non-Temporal Hint", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVNTDQA", AliasOf: "", Summary: "Load Double Quadword Non-Temporal Aligned Hint", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVNTIL", AliasOf: "", Summary: "Store Doubleword Using Non-Temporal Hint", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVNTIQ", AliasOf: "", Summary: "Store Doubleword Using Non-Temporal Hint", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVNTO", AliasOf: "", Summary: "Store Double Quadword Using Non-Temporal Hint", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVNTPD", AliasOf: "", Summary: "Store Packed Double-Precision Floating-Point Values Using Non-Temporal Hint", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVNTPS", AliasOf: "", Summary: "Store Packed Single-Precision Floating-Point Values Using Non-Temporal Hint", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVO", AliasOf: "", Summary: "Move Aligned Double Quadword", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVOA", AliasOf: "MOVO", Summary: "Move Aligned Double Quadword", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVOU", AliasOf: "", Summary: "Move Unaligned Double Quadword", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVQ", AliasOf: "", Summary: "Move", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm64", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVSD", AliasOf: "", Summary: "Move Scalar Double-Precision Floating-Point Value", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVSHDUP", AliasOf: "", Summary: "Move Packed Single-FP High and Duplicate", Forms: []inst.Form{inst.Form{ISA: []string{"SSE3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVSLDUP", AliasOf: "", Summary: "Move Packed Single-FP Low and Duplicate", Forms: []inst.Form{inst.Form{ISA: []string{"SSE3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVSS", AliasOf: "", Summary: "Move Scalar Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVUPD", AliasOf: "", Summary: "Move Unaligned Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVUPS", AliasOf: "", Summary: "Move Unaligned Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVW", AliasOf: "", Summary: "Move", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "m16", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVWLSX", AliasOf: "", Summary: "Move with Sign-Extension", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVWLZX", AliasOf: "", Summary: "Move with Zero-Extend", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVWQSX", AliasOf: "", Summary: "Move with Sign-Extension", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MOVWQZX", AliasOf: "", Summary: "Move with Zero-Extend", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MPSADBW", AliasOf: "", Summary: "Compute Multiple Packed Sums of Absolute Difference", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MULB", AliasOf: "", Summary: "Unsigned Multiply", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "ax", Action: 0x2}, inst.ImplicitOperand{Register: "al", Action: 0x1}}}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "ax", Action: 0x2}, inst.ImplicitOperand{Register: "al", Action: 0x1}}}}}, inst.Instruction{Opcode: "MULL", AliasOf: "", Summary: "Unsigned Multiply", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "eax", Action: 0x3}, inst.ImplicitOperand{Register: "edx", Action: 0x2}}}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "eax", Action: 0x3}, inst.ImplicitOperand{Register: "edx", Action: 0x2}}}}}, inst.Instruction{Opcode: "MULPD", AliasOf: "", Summary: "Multiply Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MULPS", AliasOf: "", Summary: "Multiply Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MULQ", AliasOf: "", Summary: "Unsigned Multiply", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "rax", Action: 0x3}, inst.ImplicitOperand{Register: "rdx", Action: 0x2}}}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "rax", Action: 0x3}, inst.ImplicitOperand{Register: "rdx", Action: 0x2}}}}}, inst.Instruction{Opcode: "MULSD", AliasOf: "", Summary: "Multiply Scalar Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MULSS", AliasOf: "", Summary: "Multiply Scalar Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "MULW", AliasOf: "", Summary: "Unsigned Multiply", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "ax", Action: 0x3}, inst.ImplicitOperand{Register: "dx", Action: 0x2}}}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "ax", Action: 0x3}, inst.ImplicitOperand{Register: "dx", Action: 0x2}}}}}, inst.Instruction{Opcode: "MULXL", AliasOf: "", Summary: "Unsigned Multiply Without Affecting Flags", Forms: []inst.Form{inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "edx", Action: 0x1}}}, inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "edx", Action: 0x1}}}}}, inst.Instruction{Opcode: "MULXQ", AliasOf: "", Summary: "Unsigned Multiply Without Affecting Flags", Forms: []inst.Form{inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "rdx", Action: 0x1}}}, inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "rdx", Action: 0x1}}}}}, inst.Instruction{Opcode: "MWAIT", AliasOf: "", Summary: "Monitor Wait", Forms: []inst.Form{inst.Form{ISA: []string{"MONITOR"}, Operands: []inst.Operand{}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "eax", Action: 0x1}, inst.ImplicitOperand{Register: "ecx", Action: 0x1}}}}}, inst.Instruction{Opcode: "NEGB", AliasOf: "", Summary: "Two's Complement Negation", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "NEGL", AliasOf: "", Summary: "Two's Complement Negation", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "NEGQ", AliasOf: "", Summary: "Two's Complement Negation", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "NEGW", AliasOf: "", Summary: "Two's Complement Negation", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "NOP", AliasOf: "", Summary: "No Operation", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "NOTB", AliasOf: "", Summary: "One's Complement Negation", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "NOTL", AliasOf: "", Summary: "One's Complement Negation", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "NOTQ", AliasOf: "", Summary: "One's Complement Negation", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "NOTW", AliasOf: "", Summary: "One's Complement Negation", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ORB", AliasOf: "", Summary: "Logical Inclusive OR", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "al", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x1}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ORL", AliasOf: "", Summary: "Logical Inclusive OR", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "eax", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ORPD", AliasOf: "", Summary: "Bitwise Logical OR of Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ORPS", AliasOf: "", Summary: "Bitwise Logical OR of Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ORQ", AliasOf: "", Summary: "Logical Inclusive OR", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "rax", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ORW", AliasOf: "", Summary: "Logical Inclusive OR", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}, inst.Operand{Type: "ax", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PABSB", AliasOf: "", Summary: "Packed Absolute Value of Byte Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PABSD", AliasOf: "", Summary: "Packed Absolute Value of Doubleword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PABSW", AliasOf: "", Summary: "Packed Absolute Value of Word Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PACKSSLW", AliasOf: "", Summary: "Pack Doublewords into Words with Signed Saturation", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PACKSSWB", AliasOf: "", Summary: "Pack Words into Bytes with Signed Saturation", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PACKUSDW", AliasOf: "", Summary: "Pack Doublewords into Words with Unsigned Saturation", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PACKUSWB", AliasOf: "", Summary: "Pack Words into Bytes with Unsigned Saturation", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PADDB", AliasOf: "", Summary: "Add Packed Byte Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PADDD", AliasOf: "PADDL", Summary: "Add Packed Doubleword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PADDL", AliasOf: "", Summary: "Add Packed Doubleword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PADDQ", AliasOf: "", Summary: "Add Packed Quadword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PADDSB", AliasOf: "", Summary: "Add Packed Signed Byte Integers with Signed Saturation", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PADDSW", AliasOf: "", Summary: "Add Packed Signed Word Integers with Signed Saturation", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PADDUSB", AliasOf: "", Summary: "Add Packed Unsigned Byte Integers with Unsigned Saturation", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PADDUSW", AliasOf: "", Summary: "Add Packed Unsigned Word Integers with Unsigned Saturation", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PADDW", AliasOf: "", Summary: "Add Packed Word Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PALIGNR", AliasOf: "", Summary: "Packed Align Right", Forms: []inst.Form{inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PAND", AliasOf: "", Summary: "Packed Bitwise Logical AND", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PANDN", AliasOf: "", Summary: "Packed Bitwise Logical AND NOT", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PAUSE", AliasOf: "", Summary: "Spin Loop Hint", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PAVGB", AliasOf: "", Summary: "Average Packed Byte Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PAVGW", AliasOf: "", Summary: "Average Packed Word Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PBLENDVB", AliasOf: "", Summary: "Variable Blend Packed Bytes", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm0", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm0", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PBLENDW", AliasOf: "", Summary: "Blend Packed Words", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PCLMULQDQ", AliasOf: "", Summary: "Carry-Less Quadword Multiplication", Forms: []inst.Form{inst.Form{ISA: []string{"PCLMULQDQ"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"PCLMULQDQ"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PCMPEQB", AliasOf: "", Summary: "Compare Packed Byte Data for Equality", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PCMPEQL", AliasOf: "", Summary: "Compare Packed Doubleword Data for Equality", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PCMPEQQ", AliasOf: "", Summary: "Compare Packed Quadword Data for Equality", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PCMPEQW", AliasOf: "", Summary: "Compare Packed Word Data for Equality", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PCMPESTRI", AliasOf: "", Summary: "Packed Compare Explicit Length Strings, Return Index", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "eax", Action: 0x1}, inst.ImplicitOperand{Register: "ecx", Action: 0x2}, inst.ImplicitOperand{Register: "edx", Action: 0x1}}}, inst.Form{ISA: []string{"SSE4.2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "eax", Action: 0x1}, inst.ImplicitOperand{Register: "ecx", Action: 0x2}, inst.ImplicitOperand{Register: "edx", Action: 0x1}}}}}, inst.Instruction{Opcode: "PCMPESTRM", AliasOf: "", Summary: "Packed Compare Explicit Length Strings, Return Mask", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "eax", Action: 0x1}, inst.ImplicitOperand{Register: "edx", Action: 0x1}, inst.ImplicitOperand{Register: "xmm0", Action: 0x2}}}, inst.Form{ISA: []string{"SSE4.2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "eax", Action: 0x1}, inst.ImplicitOperand{Register: "edx", Action: 0x1}, inst.ImplicitOperand{Register: "xmm0", Action: 0x2}}}}}, inst.Instruction{Opcode: "PCMPGTB", AliasOf: "", Summary: "Compare Packed Signed Byte Integers for Greater Than", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PCMPGTL", AliasOf: "", Summary: "Compare Packed Signed Doubleword Integers for Greater Than", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PCMPGTQ", AliasOf: "", Summary: "Compare Packed Data for Greater Than", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PCMPGTW", AliasOf: "", Summary: "Compare Packed Signed Word Integers for Greater Than", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PCMPISTRI", AliasOf: "", Summary: "Packed Compare Implicit Length Strings, Return Index", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "ecx", Action: 0x2}}}, inst.Form{ISA: []string{"SSE4.2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "ecx", Action: 0x2}}}}}, inst.Instruction{Opcode: "PCMPISTRM", AliasOf: "", Summary: "Packed Compare Implicit Length Strings, Return Mask", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "xmm0", Action: 0x2}}}, inst.Form{ISA: []string{"SSE4.2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "xmm0", Action: 0x2}}}}}, inst.Instruction{Opcode: "PDEPL", AliasOf: "", Summary: "Parallel Bits Deposit", Forms: []inst.Form{inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PDEPQ", AliasOf: "", Summary: "Parallel Bits Deposit", Forms: []inst.Form{inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PEXTL", AliasOf: "", Summary: "Parallel Bits Extract", Forms: []inst.Form{inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PEXTQ", AliasOf: "", Summary: "Parallel Bits Extract", Forms: []inst.Form{inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PEXTRB", AliasOf: "", Summary: "Extract Byte", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PEXTRD", AliasOf: "", Summary: "Extract Doubleword", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PEXTRQ", AliasOf: "", Summary: "Extract Quadword", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PEXTRW", AliasOf: "", Summary: "Extract Word", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m16", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PHADDD", AliasOf: "", Summary: "Packed Horizontal Add Doubleword Integer", Forms: []inst.Form{inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PHADDSW", AliasOf: "", Summary: "Packed Horizontal Add Signed Word Integers with Signed Saturation", Forms: []inst.Form{inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PHADDW", AliasOf: "", Summary: "Packed Horizontal Add Word Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PHMINPOSUW", AliasOf: "", Summary: "Packed Horizontal Minimum of Unsigned Word Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PHSUBD", AliasOf: "", Summary: "Packed Horizontal Subtract Doubleword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PHSUBSW", AliasOf: "", Summary: "Packed Horizontal Subtract Signed Word Integers with Signed Saturation", Forms: []inst.Form{inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PHSUBW", AliasOf: "", Summary: "Packed Horizontal Subtract Word Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PINSRB", AliasOf: "", Summary: "Insert Byte", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m8", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PINSRD", AliasOf: "", Summary: "Insert Doubleword", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PINSRQ", AliasOf: "", Summary: "Insert Quadword", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PINSRW", AliasOf: "", Summary: "Insert Word", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMADDUBSW", AliasOf: "", Summary: "Multiply and Add Packed Signed and Unsigned Byte Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMADDWL", AliasOf: "", Summary: "Multiply and Add Packed Signed Word Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMAXSB", AliasOf: "", Summary: "Maximum of Packed Signed Byte Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMAXSD", AliasOf: "", Summary: "Maximum of Packed Signed Doubleword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMAXSW", AliasOf: "", Summary: "Maximum of Packed Signed Word Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMAXUB", AliasOf: "", Summary: "Maximum of Packed Unsigned Byte Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMAXUD", AliasOf: "", Summary: "Maximum of Packed Unsigned Doubleword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMAXUW", AliasOf: "", Summary: "Maximum of Packed Unsigned Word Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMINSB", AliasOf: "", Summary: "Minimum of Packed Signed Byte Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMINSD", AliasOf: "", Summary: "Minimum of Packed Signed Doubleword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMINSW", AliasOf: "", Summary: "Minimum of Packed Signed Word Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMINUB", AliasOf: "", Summary: "Minimum of Packed Unsigned Byte Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMINUD", AliasOf: "", Summary: "Minimum of Packed Unsigned Doubleword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMINUW", AliasOf: "", Summary: "Minimum of Packed Unsigned Word Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMOVMSKB", AliasOf: "", Summary: "Move Byte Mask", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMOVSXBD", AliasOf: "", Summary: "Move Packed Byte Integers to Doubleword Integers with Sign Extension", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMOVSXBQ", AliasOf: "", Summary: "Move Packed Byte Integers to Quadword Integers with Sign Extension", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMOVSXBW", AliasOf: "", Summary: "Move Packed Byte Integers to Word Integers with Sign Extension", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMOVSXDQ", AliasOf: "", Summary: "Move Packed Doubleword Integers to Quadword Integers with Sign Extension", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMOVSXWD", AliasOf: "", Summary: "Move Packed Word Integers to Doubleword Integers with Sign Extension", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMOVSXWQ", AliasOf: "", Summary: "Move Packed Word Integers to Quadword Integers with Sign Extension", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMOVZXBD", AliasOf: "", Summary: "Move Packed Byte Integers to Doubleword Integers with Zero Extension", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMOVZXBQ", AliasOf: "", Summary: "Move Packed Byte Integers to Quadword Integers with Zero Extension", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMOVZXBW", AliasOf: "", Summary: "Move Packed Byte Integers to Word Integers with Zero Extension", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMOVZXDQ", AliasOf: "", Summary: "Move Packed Doubleword Integers to Quadword Integers with Zero Extension", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMOVZXWD", AliasOf: "", Summary: "Move Packed Word Integers to Doubleword Integers with Zero Extension", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMOVZXWQ", AliasOf: "", Summary: "Move Packed Word Integers to Quadword Integers with Zero Extension", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMULDQ", AliasOf: "", Summary: "Multiply Packed Signed Doubleword Integers and Store Quadword Result", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMULHRSW", AliasOf: "", Summary: "Packed Multiply Signed Word Integers and Store High Result with Round and Scale", Forms: []inst.Form{inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMULHUW", AliasOf: "", Summary: "Multiply Packed Unsigned Word Integers and Store High Result", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMULHW", AliasOf: "", Summary: "Multiply Packed Signed Word Integers and Store High Result", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMULLD", AliasOf: "", Summary: "Multiply Packed Signed Doubleword Integers and Store Low Result", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMULLW", AliasOf: "", Summary: "Multiply Packed Signed Word Integers and Store Low Result", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PMULULQ", AliasOf: "", Summary: "Multiply Packed Unsigned Doubleword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "POPCNTL", AliasOf: "", Summary: "Count of Number of Bits Set to 1", Forms: []inst.Form{inst.Form{ISA: []string{"POPCNT"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"POPCNT"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "POPCNTQ", AliasOf: "", Summary: "Count of Number of Bits Set to 1", Forms: []inst.Form{inst.Form{ISA: []string{"POPCNT"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"POPCNT"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "POPCNTW", AliasOf: "", Summary: "Count of Number of Bits Set to 1", Forms: []inst.Form{inst.Form{ISA: []string{"POPCNT"}, Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"POPCNT"}, Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "POPQ", AliasOf: "", Summary: "Pop a Value from the Stack", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "POPW", AliasOf: "", Summary: "Pop a Value from the Stack", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "POR", AliasOf: "", Summary: "Packed Bitwise Logical OR", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PREFETCHNTA", AliasOf: "", Summary: "Prefetch Data Into Caches using NTA Hint", Forms: []inst.Form{inst.Form{ISA: []string{"MMX+"}, Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PREFETCHT0", AliasOf: "", Summary: "Prefetch Data Into Caches using T0 Hint", Forms: []inst.Form{inst.Form{ISA: []string{"MMX+"}, Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PREFETCHT1", AliasOf: "", Summary: "Prefetch Data Into Caches using T1 Hint", Forms: []inst.Form{inst.Form{ISA: []string{"MMX+"}, Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PREFETCHT2", AliasOf: "", Summary: "Prefetch Data Into Caches using T2 Hint", Forms: []inst.Form{inst.Form{ISA: []string{"MMX+"}, Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PSADBW", AliasOf: "", Summary: "Compute Sum of Absolute Differences", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PSHUFB", AliasOf: "", Summary: "Packed Shuffle Bytes", Forms: []inst.Form{inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PSHUFD", AliasOf: "PSHUFL", Summary: "Shuffle Packed Doublewords", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PSHUFHW", AliasOf: "", Summary: "Shuffle Packed High Words", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PSHUFL", AliasOf: "", Summary: "Shuffle Packed Doublewords", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PSHUFLW", AliasOf: "", Summary: "Shuffle Packed Low Words", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PSIGNB", AliasOf: "", Summary: "Packed Sign of Byte Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PSIGND", AliasOf: "", Summary: "Packed Sign of Doubleword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PSIGNW", AliasOf: "", Summary: "Packed Sign of Word Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSSE3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PSLLDQ", AliasOf: "PSLLO", Summary: "Shift Packed Double Quadword Left Logical", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PSLLL", AliasOf: "", Summary: "Shift Packed Doubleword Data Left Logical", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PSLLO", AliasOf: "", Summary: "Shift Packed Double Quadword Left Logical", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PSLLQ", AliasOf: "", Summary: "Shift Packed Quadword Data Left Logical", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PSLLW", AliasOf: "", Summary: "Shift Packed Word Data Left Logical", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PSRAL", AliasOf: "", Summary: "Shift Packed Doubleword Data Right Arithmetic", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PSRAW", AliasOf: "", Summary: "Shift Packed Word Data Right Arithmetic", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PSRLDQ", AliasOf: "PSRLO", Summary: "Shift Packed Double Quadword Right Logical", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PSRLL", AliasOf: "", Summary: "Shift Packed Doubleword Data Right Logical", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PSRLO", AliasOf: "", Summary: "Shift Packed Double Quadword Right Logical", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PSRLQ", AliasOf: "", Summary: "Shift Packed Quadword Data Right Logical", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PSRLW", AliasOf: "", Summary: "Shift Packed Word Data Right Logical", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PSUBB", AliasOf: "", Summary: "Subtract Packed Byte Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PSUBL", AliasOf: "", Summary: "Subtract Packed Doubleword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PSUBQ", AliasOf: "", Summary: "Subtract Packed Quadword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PSUBSB", AliasOf: "", Summary: "Subtract Packed Signed Byte Integers with Signed Saturation", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PSUBSW", AliasOf: "", Summary: "Subtract Packed Signed Word Integers with Signed Saturation", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PSUBUSB", AliasOf: "", Summary: "Subtract Packed Unsigned Byte Integers with Unsigned Saturation", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PSUBUSW", AliasOf: "", Summary: "Subtract Packed Unsigned Word Integers with Unsigned Saturation", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PSUBW", AliasOf: "", Summary: "Subtract Packed Word Integers", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PTEST", AliasOf: "", Summary: "Packed Logical Compare", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PUNPCKHBW", AliasOf: "", Summary: "Unpack and Interleave High-Order Bytes into Words", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PUNPCKHLQ", AliasOf: "", Summary: "Unpack and Interleave High-Order Doublewords into Quadwords", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PUNPCKHQDQ", AliasOf: "", Summary: "Unpack and Interleave High-Order Quadwords into Double Quadwords", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PUNPCKHWL", AliasOf: "", Summary: "Unpack and Interleave High-Order Words into Doublewords", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PUNPCKLBW", AliasOf: "", Summary: "Unpack and Interleave Low-Order Bytes into Words", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PUNPCKLLQ", AliasOf: "", Summary: "Unpack and Interleave Low-Order Doublewords into Quadwords", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PUNPCKLQDQ", AliasOf: "", Summary: "Unpack and Interleave Low-Order Quadwords into Double Quadwords", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PUNPCKLWL", AliasOf: "", Summary: "Unpack and Interleave Low-Order Words into Doublewords", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PUSHQ", AliasOf: "", Summary: "Push Value Onto the Stack", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PUSHW", AliasOf: "", Summary: "Push Value Onto the Stack", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "PXOR", AliasOf: "", Summary: "Packed Bitwise Logical Exclusive OR", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "RCLB", AliasOf: "", Summary: "Rotate Left through Carry Flag", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "RCLL", AliasOf: "", Summary: "Rotate Left through Carry Flag", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "RCLQ", AliasOf: "", Summary: "Rotate Left through Carry Flag", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "RCLW", AliasOf: "", Summary: "Rotate Left through Carry Flag", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "RCPPS", AliasOf: "", Summary: "Compute Approximate Reciprocals of Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "RCPSS", AliasOf: "", Summary: "Compute Approximate Reciprocal of Scalar Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "RCRB", AliasOf: "", Summary: "Rotate Right through Carry Flag", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "RCRL", AliasOf: "", Summary: "Rotate Right through Carry Flag", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "RCRQ", AliasOf: "", Summary: "Rotate Right through Carry Flag", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "RCRW", AliasOf: "", Summary: "Rotate Right through Carry Flag", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "RDRANDL", AliasOf: "", Summary: "Read Random Number", Forms: []inst.Form{inst.Form{ISA: []string{"RDRAND"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "RDRANDQ", AliasOf: "", Summary: "Read Random Number", Forms: []inst.Form{inst.Form{ISA: []string{"RDRAND"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "RDRANDW", AliasOf: "", Summary: "Read Random Number", Forms: []inst.Form{inst.Form{ISA: []string{"RDRAND"}, Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "RDSEEDL", AliasOf: "", Summary: "Read Random SEED", Forms: []inst.Form{inst.Form{ISA: []string{"RDSEED"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "RDSEEDQ", AliasOf: "", Summary: "Read Random SEED", Forms: []inst.Form{inst.Form{ISA: []string{"RDSEED"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "RDSEEDW", AliasOf: "", Summary: "Read Random SEED", Forms: []inst.Form{inst.Form{ISA: []string{"RDSEED"}, Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "RDTSC", AliasOf: "", Summary: "Read Time-Stamp Counter", Forms: []inst.Form{inst.Form{ISA: []string{"RDTSC"}, Operands: []inst.Operand{}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "eax", Action: 0x2}, inst.ImplicitOperand{Register: "edx", Action: 0x2}}}}}, inst.Instruction{Opcode: "RDTSCP", AliasOf: "", Summary: "Read Time-Stamp Counter and Processor ID", Forms: []inst.Form{inst.Form{ISA: []string{"RDTSCP"}, Operands: []inst.Operand{}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "eax", Action: 0x2}, inst.ImplicitOperand{Register: "ecx", Action: 0x2}, inst.ImplicitOperand{Register: "edx", Action: 0x2}}}}}, inst.Instruction{Opcode: "RET", AliasOf: "", Summary: "Return from Procedure", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "RETFL", AliasOf: "", Summary: "Return from Procedure", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "RETFQ", AliasOf: "", Summary: "Return from Procedure", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "RETFW", AliasOf: "", Summary: "Return from Procedure", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ROLB", AliasOf: "", Summary: "Rotate Left", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ROLL", AliasOf: "", Summary: "Rotate Left", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ROLQ", AliasOf: "", Summary: "Rotate Left", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ROLW", AliasOf: "", Summary: "Rotate Left", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "RORB", AliasOf: "", Summary: "Rotate Right", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "RORL", AliasOf: "", Summary: "Rotate Right", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "RORQ", AliasOf: "", Summary: "Rotate Right", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "RORW", AliasOf: "", Summary: "Rotate Right", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "RORXL", AliasOf: "", Summary: "Rotate Right Logical Without Affecting Flags", Forms: []inst.Form{inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "RORXQ", AliasOf: "", Summary: "Rotate Right Logical Without Affecting Flags", Forms: []inst.Form{inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ROUNDPD", AliasOf: "", Summary: "Round Packed Double Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ROUNDPS", AliasOf: "", Summary: "Round Packed Single Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ROUNDSD", AliasOf: "", Summary: "Round Scalar Double Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "ROUNDSS", AliasOf: "", Summary: "Round Scalar Single Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE4.1"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "RSQRTPS", AliasOf: "", Summary: "Compute Reciprocals of Square Roots of Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "RSQRTSS", AliasOf: "", Summary: "Compute Reciprocal of Square Root of Scalar Single-Precision Floating-Point Value", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SALB", AliasOf: "", Summary: "Arithmetic Shift Left", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SALL", AliasOf: "", Summary: "Arithmetic Shift Left", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SALQ", AliasOf: "", Summary: "Arithmetic Shift Left", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SALW", AliasOf: "", Summary: "Arithmetic Shift Left", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SARB", AliasOf: "", Summary: "Arithmetic Shift Right", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SARL", AliasOf: "", Summary: "Arithmetic Shift Right", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SARQ", AliasOf: "", Summary: "Arithmetic Shift Right", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SARW", AliasOf: "", Summary: "Arithmetic Shift Right", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SARXL", AliasOf: "", Summary: "Arithmetic Shift Right Without Affecting Flags", Forms: []inst.Form{inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SARXQ", AliasOf: "", Summary: "Arithmetic Shift Right Without Affecting Flags", Forms: []inst.Form{inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SBBB", AliasOf: "", Summary: "Subtract with Borrow", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "al", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x1}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SBBL", AliasOf: "", Summary: "Subtract with Borrow", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "eax", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SBBQ", AliasOf: "", Summary: "Subtract with Borrow", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "rax", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SBBW", AliasOf: "", Summary: "Subtract with Borrow", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}, inst.Operand{Type: "ax", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SETCC", AliasOf: "", Summary: "Set byte if above or equal (CF == 0)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SETCS", AliasOf: "", Summary: "Set byte if below (CF == 1)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SETEQ", AliasOf: "", Summary: "Set byte if equal (ZF == 1)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SETGE", AliasOf: "", Summary: "Set byte if greater or equal (SF == OF)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SETGT", AliasOf: "", Summary: "Set byte if greater (ZF == 0 and SF == OF)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SETHI", AliasOf: "", Summary: "Set byte if above (CF == 0 and ZF == 0)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SETLE", AliasOf: "", Summary: "Set byte if less or equal (ZF == 1 or SF != OF)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SETLS", AliasOf: "", Summary: "Set byte if below or equal (CF == 1 or ZF == 1)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SETLT", AliasOf: "", Summary: "Set byte if less (SF != OF)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SETMI", AliasOf: "", Summary: "Set byte if sign (SF == 1)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SETNE", AliasOf: "", Summary: "Set byte if not equal (ZF == 0)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SETOC", AliasOf: "", Summary: "Set byte if not overflow (OF == 0)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SETOS", AliasOf: "", Summary: "Set byte if overflow (OF == 1)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SETPC", AliasOf: "", Summary: "Set byte if not parity (PF == 0)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SETPL", AliasOf: "", Summary: "Set byte if not sign (SF == 0)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SETPS", AliasOf: "", Summary: "Set byte if parity (PF == 1)", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SFENCE", AliasOf: "", Summary: "Store Fence", Forms: []inst.Form{inst.Form{ISA: []string{"MMX+"}, Operands: []inst.Operand{}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SHA1MSG1", AliasOf: "", Summary: "Perform an Intermediate Calculation for the Next Four SHA1 Message Doublewords", Forms: []inst.Form{inst.Form{ISA: []string{"SHA"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SHA"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SHA1MSG2", AliasOf: "", Summary: "Perform a Final Calculation for the Next Four SHA1 Message Doublewords", Forms: []inst.Form{inst.Form{ISA: []string{"SHA"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SHA"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SHA1NEXTE", AliasOf: "", Summary: "Calculate SHA1 State Variable E after Four Rounds", Forms: []inst.Form{inst.Form{ISA: []string{"SHA"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SHA"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SHA1RNDS4", AliasOf: "", Summary: "Perform Four Rounds of SHA1 Operation", Forms: []inst.Form{inst.Form{ISA: []string{"SHA"}, Operands: []inst.Operand{inst.Operand{Type: "imm2u", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SHA"}, Operands: []inst.Operand{inst.Operand{Type: "imm2u", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SHA256MSG1", AliasOf: "", Summary: "Perform an Intermediate Calculation for the Next Four SHA256 Message Doublewords", Forms: []inst.Form{inst.Form{ISA: []string{"SHA"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SHA"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SHA256MSG2", AliasOf: "", Summary: "Perform a Final Calculation for the Next Four SHA256 Message Doublewords", Forms: []inst.Form{inst.Form{ISA: []string{"SHA"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SHA"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SHA256RNDS2", AliasOf: "", Summary: "Perform Two Rounds of SHA256 Operation", Forms: []inst.Form{inst.Form{ISA: []string{"SHA"}, Operands: []inst.Operand{inst.Operand{Type: "xmm0", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SHA"}, Operands: []inst.Operand{inst.Operand{Type: "xmm0", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SHLB", AliasOf: "", Summary: "Logical Shift Left", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SHLL", AliasOf: "", Summary: "Logical Shift Left", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SHLQ", AliasOf: "", Summary: "Logical Shift Left", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SHLW", AliasOf: "", Summary: "Logical Shift Left", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SHLXL", AliasOf: "", Summary: "Logical Shift Left Without Affecting Flags", Forms: []inst.Form{inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SHLXQ", AliasOf: "", Summary: "Logical Shift Left Without Affecting Flags", Forms: []inst.Form{inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SHRB", AliasOf: "", Summary: "Logical Shift Right", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SHRL", AliasOf: "", Summary: "Logical Shift Right", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SHRQ", AliasOf: "", Summary: "Logical Shift Right", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SHRW", AliasOf: "", Summary: "Logical Shift Right", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "1", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "cl", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SHRXL", AliasOf: "", Summary: "Logical Shift Right Without Affecting Flags", Forms: []inst.Form{inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SHRXQ", AliasOf: "", Summary: "Logical Shift Right Without Affecting Flags", Forms: []inst.Form{inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"BMI2"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SHUFPD", AliasOf: "", Summary: "Shuffle Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SHUFPS", AliasOf: "", Summary: "Shuffle Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SQRTPD", AliasOf: "", Summary: "Compute Square Roots of Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SQRTPS", AliasOf: "", Summary: "Compute Square Roots of Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SQRTSD", AliasOf: "", Summary: "Compute Square Root of Scalar Double-Precision Floating-Point Value", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SQRTSS", AliasOf: "", Summary: "Compute Square Root of Scalar Single-Precision Floating-Point Value", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "STC", AliasOf: "", Summary: "Set Carry Flag", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "STD", AliasOf: "", Summary: "Set Direction Flag", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "STMXCSR", AliasOf: "", Summary: "Store MXCSR Register State", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SUBB", AliasOf: "", Summary: "Subtract", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "al", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x1}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SUBL", AliasOf: "", Summary: "Subtract", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "eax", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SUBPD", AliasOf: "", Summary: "Subtract Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SUBPS", AliasOf: "", Summary: "Subtract Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SUBQ", AliasOf: "", Summary: "Subtract", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "rax", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SUBSD", AliasOf: "", Summary: "Subtract Scalar Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SUBSS", AliasOf: "", Summary: "Subtract Scalar Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SUBW", AliasOf: "", Summary: "Subtract", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}, inst.Operand{Type: "ax", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "SYSCALL", AliasOf: "", Summary: "Fast System Call", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "r11", Action: 0x2}, inst.ImplicitOperand{Register: "rcx", Action: 0x2}}}}}, inst.Instruction{Opcode: "TESTB", AliasOf: "", Summary: "Logical Compare", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "al", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r8", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "r8", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m8", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "m8", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "TESTL", AliasOf: "", Summary: "Logical Compare", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "eax", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "TESTQ", AliasOf: "", Summary: "Logical Compare", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "rax", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "TESTW", AliasOf: "", Summary: "Logical Compare", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}, inst.Operand{Type: "ax", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "m16", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "TZCNTL", AliasOf: "", Summary: "Count the Number of Trailing Zero Bits", Forms: []inst.Form{inst.Form{ISA: []string{"BMI"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"BMI"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "TZCNTQ", AliasOf: "", Summary: "Count the Number of Trailing Zero Bits", Forms: []inst.Form{inst.Form{ISA: []string{"BMI"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"BMI"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "TZCNTW", AliasOf: "", Summary: "Count the Number of Trailing Zero Bits", Forms: []inst.Form{inst.Form{ISA: []string{"BMI"}, Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"BMI"}, Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "UCOMISD", AliasOf: "", Summary: "Unordered Compare Scalar Double-Precision Floating-Point Values and Set EFLAGS", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "UCOMISS", AliasOf: "", Summary: "Unordered Compare Scalar Single-Precision Floating-Point Values and Set EFLAGS", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "UD2", AliasOf: "", Summary: "Undefined Instruction", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "UNPCKHPD", AliasOf: "", Summary: "Unpack and Interleave High Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "UNPCKHPS", AliasOf: "", Summary: "Unpack and Interleave High Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "UNPCKLPD", AliasOf: "", Summary: "Unpack and Interleave Low Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "UNPCKLPS", AliasOf: "", Summary: "Unpack and Interleave Low Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VADDPD", AliasOf: "", Summary: "Add Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VADDPS", AliasOf: "", Summary: "Add Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VADDSD", AliasOf: "", Summary: "Add Scalar Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VADDSS", AliasOf: "", Summary: "Add Scalar Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VADDSUBPD", AliasOf: "", Summary: "Packed Double-FP Add/Subtract", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VADDSUBPS", AliasOf: "", Summary: "Packed Single-FP Add/Subtract", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VAESDEC", AliasOf: "", Summary: "Perform One Round of an AES Decryption Flow", Forms: []inst.Form{inst.Form{ISA: []string{"AVX", "AES"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX", "AES"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VAESDECLAST", AliasOf: "", Summary: "Perform Last Round of an AES Decryption Flow", Forms: []inst.Form{inst.Form{ISA: []string{"AVX", "AES"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX", "AES"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VAESENC", AliasOf: "", Summary: "Perform One Round of an AES Encryption Flow", Forms: []inst.Form{inst.Form{ISA: []string{"AVX", "AES"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX", "AES"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VAESENCLAST", AliasOf: "", Summary: "Perform Last Round of an AES Encryption Flow", Forms: []inst.Form{inst.Form{ISA: []string{"AVX", "AES"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX", "AES"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VAESIMC", AliasOf: "", Summary: "Perform the AES InvMixColumn Transformation", Forms: []inst.Form{inst.Form{ISA: []string{"AVX", "AES"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX", "AES"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VAESKEYGENASSIST", AliasOf: "", Summary: "AES Round Key Generation Assist", Forms: []inst.Form{inst.Form{ISA: []string{"AVX", "AES"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX", "AES"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VANDNPD", AliasOf: "", Summary: "Bitwise Logical AND NOT of Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VANDNPS", AliasOf: "", Summary: "Bitwise Logical AND NOT of Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VANDPD", AliasOf: "", Summary: "Bitwise Logical AND of Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VANDPS", AliasOf: "", Summary: "Bitwise Logical AND of Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VBLENDPD", AliasOf: "", Summary: "Blend Packed Double Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VBLENDPS", AliasOf: "", Summary: " Blend Packed Single Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VBLENDVPD", AliasOf: "", Summary: " Variable Blend Packed Double Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VBLENDVPS", AliasOf: "", Summary: " Variable Blend Packed Single Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VBROADCASTF128", AliasOf: "", Summary: "Broadcast 128 Bit of Floating-Point Data", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VBROADCASTI128", AliasOf: "", Summary: "Broadcast 128 Bits of Integer Data", Forms: []inst.Form{inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VBROADCASTSD", AliasOf: "", Summary: "Broadcast Double-Precision Floating-Point Element", Forms: []inst.Form{inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VBROADCASTSS", AliasOf: "", Summary: "Broadcast Single-Precision Floating-Point Element", Forms: []inst.Form{inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCMPPD", AliasOf: "", Summary: "Compare Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCMPPS", AliasOf: "", Summary: "Compare Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCMPSD", AliasOf: "", Summary: "Compare Scalar Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCMPSS", AliasOf: "", Summary: "Compare Scalar Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCOMISD", AliasOf: "", Summary: "Compare Scalar Ordered Double-Precision Floating-Point Values and Set EFLAGS", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCOMISS", AliasOf: "", Summary: "Compare Scalar Ordered Single-Precision Floating-Point Values and Set EFLAGS", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCVTDQ2PD", AliasOf: "", Summary: "Convert Packed Dword Integers to Packed Double-Precision FP Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCVTDQ2PS", AliasOf: "", Summary: "Convert Packed Dword Integers to Packed Single-Precision FP Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCVTPD2DQX", AliasOf: "", Summary: "Convert Packed Double-Precision FP Values to Packed Dword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCVTPD2DQY", AliasOf: "", Summary: "Convert Packed Double-Precision FP Values to Packed Dword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCVTPD2PSX", AliasOf: "", Summary: "Convert Packed Double-Precision FP Values to Packed Single-Precision FP Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCVTPD2PSY", AliasOf: "", Summary: "Convert Packed Double-Precision FP Values to Packed Single-Precision FP Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCVTPH2PS", AliasOf: "", Summary: "Convert Half-Precision FP Values to Single-Precision FP Values", Forms: []inst.Form{inst.Form{ISA: []string{"F16C"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"F16C"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"F16C"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"F16C"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCVTPS2DQ", AliasOf: "", Summary: "Convert Packed Single-Precision FP Values to Packed Dword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCVTPS2PD", AliasOf: "", Summary: "Convert Packed Single-Precision FP Values to Packed Double-Precision FP Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCVTPS2PH", AliasOf: "", Summary: "Convert Single-Precision FP value to Half-Precision FP value", Forms: []inst.Form{inst.Form{ISA: []string{"F16C"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"F16C"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"F16C"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"F16C"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCVTSD2SI", AliasOf: "", Summary: "Convert Scalar Double-Precision FP Value to Integer", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCVTSD2SIQ", AliasOf: "", Summary: "Convert Scalar Double-Precision FP Value to Integer", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCVTSD2SS", AliasOf: "", Summary: "Convert Scalar Double-Precision FP Value to Scalar Single-Precision FP Value", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCVTSI2SDL", AliasOf: "", Summary: "Convert Dword Integer to Scalar Double-Precision FP Value", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCVTSI2SDQ", AliasOf: "", Summary: "Convert Dword Integer to Scalar Double-Precision FP Value", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCVTSI2SSL", AliasOf: "", Summary: "Convert Dword Integer to Scalar Single-Precision FP Value", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCVTSI2SSQ", AliasOf: "", Summary: "Convert Dword Integer to Scalar Single-Precision FP Value", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCVTSS2SD", AliasOf: "", Summary: "Convert Scalar Single-Precision FP Value to Scalar Double-Precision FP Value", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCVTSS2SI", AliasOf: "", Summary: "Convert Scalar Single-Precision FP Value to Dword Integer", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCVTSS2SIQ", AliasOf: "", Summary: "Convert Scalar Single-Precision FP Value to Dword Integer", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCVTTPD2DQX", AliasOf: "", Summary: "Convert with Truncation Packed Double-Precision FP Values to Packed Dword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCVTTPD2DQY", AliasOf: "", Summary: "Convert with Truncation Packed Double-Precision FP Values to Packed Dword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCVTTPS2DQ", AliasOf: "", Summary: "Convert with Truncation Packed Single-Precision FP Values to Packed Dword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCVTTSD2SI", AliasOf: "", Summary: "Convert with Truncation Scalar Double-Precision FP Value to Signed Integer", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCVTTSD2SIQ", AliasOf: "", Summary: "Convert with Truncation Scalar Double-Precision FP Value to Signed Integer", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCVTTSS2SI", AliasOf: "", Summary: "Convert with Truncation Scalar Single-Precision FP Value to Dword Integer", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VCVTTSS2SIQ", AliasOf: "", Summary: "Convert with Truncation Scalar Single-Precision FP Value to Dword Integer", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VDIVPD", AliasOf: "", Summary: "Divide Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VDIVPS", AliasOf: "", Summary: "Divide Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VDIVSD", AliasOf: "", Summary: "Divide Scalar Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VDIVSS", AliasOf: "", Summary: "Divide Scalar Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VDPPD", AliasOf: "", Summary: "Dot Product of Packed Double Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VDPPS", AliasOf: "", Summary: "Dot Product of Packed Single Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VEXTRACTF128", AliasOf: "", Summary: "Extract Packed Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VEXTRACTI128", AliasOf: "", Summary: "Extract Packed Integer Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VEXTRACTPS", AliasOf: "", Summary: "Extract Packed Single Precision Floating-Point Value", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMADD132PD", AliasOf: "", Summary: "Fused Multiply-Add of Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMADD132PS", AliasOf: "", Summary: "Fused Multiply-Add of Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMADD132SD", AliasOf: "", Summary: "Fused Multiply-Add of Scalar Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMADD132SS", AliasOf: "", Summary: "Fused Multiply-Add of Scalar Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMADD213PD", AliasOf: "", Summary: "Fused Multiply-Add of Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMADD213PS", AliasOf: "", Summary: "Fused Multiply-Add of Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMADD213SD", AliasOf: "", Summary: "Fused Multiply-Add of Scalar Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMADD213SS", AliasOf: "", Summary: "Fused Multiply-Add of Scalar Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMADD231PD", AliasOf: "", Summary: "Fused Multiply-Add of Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMADD231PS", AliasOf: "", Summary: "Fused Multiply-Add of Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMADD231SD", AliasOf: "", Summary: "Fused Multiply-Add of Scalar Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMADD231SS", AliasOf: "", Summary: "Fused Multiply-Add of Scalar Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMADDSUB132PD", AliasOf: "", Summary: "Fused Multiply-Alternating Add/Subtract of Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMADDSUB132PS", AliasOf: "", Summary: "Fused Multiply-Alternating Add/Subtract of Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMADDSUB213PD", AliasOf: "", Summary: "Fused Multiply-Alternating Add/Subtract of Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMADDSUB213PS", AliasOf: "", Summary: "Fused Multiply-Alternating Add/Subtract of Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMADDSUB231PD", AliasOf: "", Summary: "Fused Multiply-Alternating Add/Subtract of Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMADDSUB231PS", AliasOf: "", Summary: "Fused Multiply-Alternating Add/Subtract of Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMSUB132PD", AliasOf: "", Summary: "Fused Multiply-Subtract of Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMSUB132PS", AliasOf: "", Summary: "Fused Multiply-Subtract of Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMSUB132SD", AliasOf: "", Summary: "Fused Multiply-Subtract of Scalar Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMSUB132SS", AliasOf: "", Summary: "Fused Multiply-Subtract of Scalar Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMSUB213PD", AliasOf: "", Summary: "Fused Multiply-Subtract of Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMSUB213PS", AliasOf: "", Summary: "Fused Multiply-Subtract of Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMSUB213SD", AliasOf: "", Summary: "Fused Multiply-Subtract of Scalar Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMSUB213SS", AliasOf: "", Summary: "Fused Multiply-Subtract of Scalar Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMSUB231PD", AliasOf: "", Summary: "Fused Multiply-Subtract of Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMSUB231PS", AliasOf: "", Summary: "Fused Multiply-Subtract of Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMSUB231SD", AliasOf: "", Summary: "Fused Multiply-Subtract of Scalar Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMSUB231SS", AliasOf: "", Summary: "Fused Multiply-Subtract of Scalar Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMSUBADD132PD", AliasOf: "", Summary: "Fused Multiply-Alternating Subtract/Add of Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMSUBADD132PS", AliasOf: "", Summary: "Fused Multiply-Alternating Subtract/Add of Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMSUBADD213PD", AliasOf: "", Summary: "Fused Multiply-Alternating Subtract/Add of Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMSUBADD213PS", AliasOf: "", Summary: "Fused Multiply-Alternating Subtract/Add of Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMSUBADD231PD", AliasOf: "", Summary: "Fused Multiply-Alternating Subtract/Add of Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFMSUBADD231PS", AliasOf: "", Summary: "Fused Multiply-Alternating Subtract/Add of Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFNMADD132PD", AliasOf: "", Summary: "Fused Negative Multiply-Add of Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFNMADD132PS", AliasOf: "", Summary: "Fused Negative Multiply-Add of Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFNMADD132SD", AliasOf: "", Summary: "Fused Negative Multiply-Add of Scalar Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFNMADD132SS", AliasOf: "", Summary: "Fused Negative Multiply-Add of Scalar Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFNMADD213PD", AliasOf: "", Summary: "Fused Negative Multiply-Add of Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFNMADD213PS", AliasOf: "", Summary: "Fused Negative Multiply-Add of Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFNMADD213SD", AliasOf: "", Summary: "Fused Negative Multiply-Add of Scalar Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFNMADD213SS", AliasOf: "", Summary: "Fused Negative Multiply-Add of Scalar Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFNMADD231PD", AliasOf: "", Summary: "Fused Negative Multiply-Add of Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFNMADD231PS", AliasOf: "", Summary: "Fused Negative Multiply-Add of Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFNMADD231SD", AliasOf: "", Summary: "Fused Negative Multiply-Add of Scalar Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFNMADD231SS", AliasOf: "", Summary: "Fused Negative Multiply-Add of Scalar Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFNMSUB132PD", AliasOf: "", Summary: "Fused Negative Multiply-Subtract of Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFNMSUB132PS", AliasOf: "", Summary: "Fused Negative Multiply-Subtract of Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFNMSUB132SD", AliasOf: "", Summary: "Fused Negative Multiply-Subtract of Scalar Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFNMSUB132SS", AliasOf: "", Summary: "Fused Negative Multiply-Subtract of Scalar Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFNMSUB213PD", AliasOf: "", Summary: "Fused Negative Multiply-Subtract of Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFNMSUB213PS", AliasOf: "", Summary: "Fused Negative Multiply-Subtract of Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFNMSUB213SD", AliasOf: "", Summary: "Fused Negative Multiply-Subtract of Scalar Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFNMSUB213SS", AliasOf: "", Summary: "Fused Negative Multiply-Subtract of Scalar Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFNMSUB231PD", AliasOf: "", Summary: "Fused Negative Multiply-Subtract of Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFNMSUB231PS", AliasOf: "", Summary: "Fused Negative Multiply-Subtract of Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFNMSUB231SD", AliasOf: "", Summary: "Fused Negative Multiply-Subtract of Scalar Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VFNMSUB231SS", AliasOf: "", Summary: "Fused Negative Multiply-Subtract of Scalar Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"FMA3"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VGATHERDPD", AliasOf: "", Summary: "Gather Packed Double-Precision Floating-Point Values Using Signed Doubleword Indices", Forms: []inst.Form{inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x3}, inst.Operand{Type: "vm32x", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x3}, inst.Operand{Type: "vm32x", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VGATHERDPS", AliasOf: "", Summary: "Gather Packed Single-Precision Floating-Point Values Using Signed Doubleword Indices", Forms: []inst.Form{inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x3}, inst.Operand{Type: "vm32x", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x3}, inst.Operand{Type: "vm32y", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VGATHERQPD", AliasOf: "", Summary: "Gather Packed Double-Precision Floating-Point Values Using Signed Quadword Indices", Forms: []inst.Form{inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x3}, inst.Operand{Type: "vm64x", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x3}, inst.Operand{Type: "vm64y", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VGATHERQPS", AliasOf: "", Summary: "Gather Packed Single-Precision Floating-Point Values Using Signed Quadword Indices", Forms: []inst.Form{inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x3}, inst.Operand{Type: "vm64x", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x3}, inst.Operand{Type: "vm64y", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VHADDPD", AliasOf: "", Summary: "Packed Double-FP Horizontal Add", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VHADDPS", AliasOf: "", Summary: "Packed Single-FP Horizontal Add", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VHSUBPD", AliasOf: "", Summary: "Packed Double-FP Horizontal Subtract", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VHSUBPS", AliasOf: "", Summary: "Packed Single-FP Horizontal Subtract", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VINSERTF128", AliasOf: "", Summary: "Insert Packed Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VINSERTI128", AliasOf: "", Summary: "Insert Packed Integer Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VINSERTPS", AliasOf: "", Summary: "Insert Packed Single Precision Floating-Point Value", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VLDDQU", AliasOf: "", Summary: "Load Unaligned Integer 128 Bits", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VLDMXCSR", AliasOf: "", Summary: "Load MXCSR Register", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMASKMOVDQU", AliasOf: "", Summary: "Store Selected Bytes of Double Quadword", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "rdi", Action: 0x1}}}}}, inst.Instruction{Opcode: "VMASKMOVPD", AliasOf: "", Summary: "Conditional Move Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "m256", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMASKMOVPS", AliasOf: "", Summary: "Conditional Move Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "m256", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMAXPD", AliasOf: "", Summary: "Return Maximum Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMAXPS", AliasOf: "", Summary: "Return Maximum Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMAXSD", AliasOf: "", Summary: "Return Maximum Scalar Double-Precision Floating-Point Value", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMAXSS", AliasOf: "", Summary: "Return Maximum Scalar Single-Precision Floating-Point Value", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMINPD", AliasOf: "", Summary: "Return Minimum Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMINPS", AliasOf: "", Summary: "Return Minimum Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMINSD", AliasOf: "", Summary: "Return Minimum Scalar Double-Precision Floating-Point Value", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMINSS", AliasOf: "", Summary: "Return Minimum Scalar Single-Precision Floating-Point Value", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMOVAPD", AliasOf: "", Summary: "Move Aligned Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "m256", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMOVAPS", AliasOf: "", Summary: "Move Aligned Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "m256", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMOVD", AliasOf: "", Summary: "Move Doubleword", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMOVDDUP", AliasOf: "", Summary: "Move One Double-FP and Duplicate", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMOVDQA", AliasOf: "", Summary: "Move Aligned Double Quadword", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "m256", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMOVDQU", AliasOf: "", Summary: "Move Unaligned Double Quadword", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "m256", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMOVHLPS", AliasOf: "", Summary: "Move Packed Single-Precision Floating-Point Values High to Low", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMOVHPD", AliasOf: "", Summary: "Move High Packed Double-Precision Floating-Point Value", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMOVHPS", AliasOf: "", Summary: "Move High Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMOVLHPS", AliasOf: "", Summary: "Move Packed Single-Precision Floating-Point Values Low to High", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMOVLPD", AliasOf: "", Summary: "Move Low Packed Double-Precision Floating-Point Value", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMOVLPS", AliasOf: "", Summary: "Move Low Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMOVMSKPD", AliasOf: "", Summary: "Extract Packed Double-Precision Floating-Point Sign Mask", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMOVMSKPS", AliasOf: "", Summary: "Extract Packed Single-Precision Floating-Point Sign Mask", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMOVNTDQ", AliasOf: "", Summary: "Store Double Quadword Using Non-Temporal Hint", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "m256", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMOVNTDQA", AliasOf: "", Summary: "Load Double Quadword Non-Temporal Aligned Hint", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMOVNTPD", AliasOf: "", Summary: "Store Packed Double-Precision Floating-Point Values Using Non-Temporal Hint", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "m256", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMOVNTPS", AliasOf: "", Summary: "Store Packed Single-Precision Floating-Point Values Using Non-Temporal Hint", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "m256", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMOVQ", AliasOf: "", Summary: "Move Quadword", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMOVSD", AliasOf: "", Summary: "Move Scalar Double-Precision Floating-Point Value", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMOVSHDUP", AliasOf: "", Summary: "Move Packed Single-FP High and Duplicate", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMOVSLDUP", AliasOf: "", Summary: "Move Packed Single-FP Low and Duplicate", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMOVSS", AliasOf: "", Summary: "Move Scalar Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMOVUPD", AliasOf: "", Summary: "Move Unaligned Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "m256", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMOVUPS", AliasOf: "", Summary: "Move Unaligned Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "m256", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMPSADBW", AliasOf: "", Summary: "Compute Multiple Packed Sums of Absolute Difference", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMULPD", AliasOf: "", Summary: "Multiply Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMULPS", AliasOf: "", Summary: "Multiply Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMULSD", AliasOf: "", Summary: "Multiply Scalar Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VMULSS", AliasOf: "", Summary: "Multiply Scalar Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VORPD", AliasOf: "", Summary: "Bitwise Logical OR of Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VORPS", AliasOf: "", Summary: "Bitwise Logical OR of Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPABSB", AliasOf: "", Summary: "Packed Absolute Value of Byte Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPABSD", AliasOf: "", Summary: "Packed Absolute Value of Doubleword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPABSW", AliasOf: "", Summary: "Packed Absolute Value of Word Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPACKSSDW", AliasOf: "", Summary: "Pack Doublewords into Words with Signed Saturation", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPACKSSWB", AliasOf: "", Summary: "Pack Words into Bytes with Signed Saturation", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPACKUSDW", AliasOf: "", Summary: "Pack Doublewords into Words with Unsigned Saturation", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPACKUSWB", AliasOf: "", Summary: "Pack Words into Bytes with Unsigned Saturation", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPADDB", AliasOf: "", Summary: "Add Packed Byte Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPADDD", AliasOf: "", Summary: "Add Packed Doubleword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPADDQ", AliasOf: "", Summary: "Add Packed Quadword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPADDSB", AliasOf: "", Summary: "Add Packed Signed Byte Integers with Signed Saturation", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPADDSW", AliasOf: "", Summary: "Add Packed Signed Word Integers with Signed Saturation", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPADDUSB", AliasOf: "", Summary: "Add Packed Unsigned Byte Integers with Unsigned Saturation", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPADDUSW", AliasOf: "", Summary: "Add Packed Unsigned Word Integers with Unsigned Saturation", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPADDW", AliasOf: "", Summary: "Add Packed Word Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPALIGNR", AliasOf: "", Summary: "Packed Align Right", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPAND", AliasOf: "", Summary: "Packed Bitwise Logical AND", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPANDN", AliasOf: "", Summary: "Packed Bitwise Logical AND NOT", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPAVGB", AliasOf: "", Summary: "Average Packed Byte Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPAVGW", AliasOf: "", Summary: "Average Packed Word Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPBLENDD", AliasOf: "", Summary: "Blend Packed Doublewords", Forms: []inst.Form{inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPBLENDVB", AliasOf: "", Summary: "Variable Blend Packed Bytes", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPBLENDW", AliasOf: "", Summary: "Blend Packed Words", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPBROADCASTB", AliasOf: "", Summary: "Broadcast Byte Integer", Forms: []inst.Form{inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPBROADCASTD", AliasOf: "", Summary: "Broadcast Doubleword Integer", Forms: []inst.Form{inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPBROADCASTQ", AliasOf: "", Summary: "Broadcast Quadword Integer", Forms: []inst.Form{inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPBROADCASTW", AliasOf: "", Summary: "Broadcast Word Integer", Forms: []inst.Form{inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPCLMULQDQ", AliasOf: "", Summary: "Carry-Less Quadword Multiplication", Forms: []inst.Form{inst.Form{ISA: []string{"AVX", "PCLMULQDQ"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX", "PCLMULQDQ"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPCMPEQB", AliasOf: "", Summary: "Compare Packed Byte Data for Equality", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPCMPEQD", AliasOf: "", Summary: "Compare Packed Doubleword Data for Equality", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPCMPEQQ", AliasOf: "", Summary: "Compare Packed Quadword Data for Equality", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPCMPEQW", AliasOf: "", Summary: "Compare Packed Word Data for Equality", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPCMPESTRI", AliasOf: "", Summary: "Packed Compare Explicit Length Strings, Return Index", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "eax", Action: 0x1}, inst.ImplicitOperand{Register: "ecx", Action: 0x2}, inst.ImplicitOperand{Register: "edx", Action: 0x1}}}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "eax", Action: 0x1}, inst.ImplicitOperand{Register: "ecx", Action: 0x2}, inst.ImplicitOperand{Register: "edx", Action: 0x1}}}}}, inst.Instruction{Opcode: "VPCMPESTRM", AliasOf: "", Summary: "Packed Compare Explicit Length Strings, Return Mask", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "eax", Action: 0x1}, inst.ImplicitOperand{Register: "edx", Action: 0x1}, inst.ImplicitOperand{Register: "xmm0", Action: 0x2}}}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "eax", Action: 0x1}, inst.ImplicitOperand{Register: "edx", Action: 0x1}, inst.ImplicitOperand{Register: "xmm0", Action: 0x2}}}}}, inst.Instruction{Opcode: "VPCMPGTB", AliasOf: "", Summary: "Compare Packed Signed Byte Integers for Greater Than", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPCMPGTD", AliasOf: "", Summary: "Compare Packed Signed Doubleword Integers for Greater Than", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPCMPGTQ", AliasOf: "", Summary: "Compare Packed Data for Greater Than", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPCMPGTW", AliasOf: "", Summary: "Compare Packed Signed Word Integers for Greater Than", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPCMPISTRI", AliasOf: "", Summary: "Packed Compare Implicit Length Strings, Return Index", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "ecx", Action: 0x2}}}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "ecx", Action: 0x2}}}}}, inst.Instruction{Opcode: "VPCMPISTRM", AliasOf: "", Summary: "Packed Compare Implicit Length Strings, Return Mask", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "xmm0", Action: 0x2}}}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "xmm0", Action: 0x2}}}}}, inst.Instruction{Opcode: "VPERM2F128", AliasOf: "", Summary: "Permute Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPERM2I128", AliasOf: "", Summary: "Permute 128-Bit Integer Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPERMD", AliasOf: "", Summary: "Permute Doubleword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPERMILPD", AliasOf: "", Summary: "Permute Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPERMILPS", AliasOf: "", Summary: "Permute Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPERMPD", AliasOf: "", Summary: "Permute Double-Precision Floating-Point Elements", Forms: []inst.Form{inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPERMPS", AliasOf: "", Summary: "Permute Single-Precision Floating-Point Elements", Forms: []inst.Form{inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPERMQ", AliasOf: "", Summary: "Permute Quadword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPEXTRB", AliasOf: "", Summary: "Extract Byte", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m8", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPEXTRD", AliasOf: "", Summary: "Extract Doubleword", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPEXTRQ", AliasOf: "", Summary: "Extract Quadword", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPEXTRW", AliasOf: "", Summary: "Extract Word", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m16", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPGATHERDD", AliasOf: "", Summary: "Gather Packed Doubleword Values Using Signed Doubleword Indices", Forms: []inst.Form{inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x3}, inst.Operand{Type: "vm32x", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x3}, inst.Operand{Type: "vm32y", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPGATHERDQ", AliasOf: "", Summary: "Gather Packed Quadword Values Using Signed Doubleword Indices", Forms: []inst.Form{inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x3}, inst.Operand{Type: "vm32x", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x3}, inst.Operand{Type: "vm32x", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPGATHERQD", AliasOf: "", Summary: "Gather Packed Doubleword Values Using Signed Quadword Indices", Forms: []inst.Form{inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x3}, inst.Operand{Type: "vm64x", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x3}, inst.Operand{Type: "vm64y", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPGATHERQQ", AliasOf: "", Summary: "Gather Packed Quadword Values Using Signed Quadword Indices", Forms: []inst.Form{inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x3}, inst.Operand{Type: "vm64x", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x3}, inst.Operand{Type: "vm64y", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPHADDD", AliasOf: "", Summary: "Packed Horizontal Add Doubleword Integer", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPHADDSW", AliasOf: "", Summary: "Packed Horizontal Add Signed Word Integers with Signed Saturation", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPHADDW", AliasOf: "", Summary: "Packed Horizontal Add Word Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPHMINPOSUW", AliasOf: "", Summary: "Packed Horizontal Minimum of Unsigned Word Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPHSUBD", AliasOf: "", Summary: "Packed Horizontal Subtract Doubleword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPHSUBSW", AliasOf: "", Summary: "Packed Horizontal Subtract Signed Word Integers with Signed Saturation", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPHSUBW", AliasOf: "", Summary: "Packed Horizontal Subtract Word Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPINSRB", AliasOf: "", Summary: "Insert Byte", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m8", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPINSRD", AliasOf: "", Summary: "Insert Doubleword", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPINSRQ", AliasOf: "", Summary: "Insert Quadword", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPINSRW", AliasOf: "", Summary: "Insert Word", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMADDUBSW", AliasOf: "", Summary: "Multiply and Add Packed Signed and Unsigned Byte Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMADDWD", AliasOf: "", Summary: "Multiply and Add Packed Signed Word Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMASKMOVD", AliasOf: "", Summary: "Conditional Move Packed Doubleword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "m256", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMASKMOVQ", AliasOf: "", Summary: "Conditional Move Packed Quadword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "m128", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "m256", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMAXSB", AliasOf: "", Summary: "Maximum of Packed Signed Byte Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMAXSD", AliasOf: "", Summary: "Maximum of Packed Signed Doubleword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMAXSW", AliasOf: "", Summary: "Maximum of Packed Signed Word Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMAXUB", AliasOf: "", Summary: "Maximum of Packed Unsigned Byte Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMAXUD", AliasOf: "", Summary: "Maximum of Packed Unsigned Doubleword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMAXUW", AliasOf: "", Summary: "Maximum of Packed Unsigned Word Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMINSB", AliasOf: "", Summary: "Minimum of Packed Signed Byte Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMINSD", AliasOf: "", Summary: "Minimum of Packed Signed Doubleword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMINSW", AliasOf: "", Summary: "Minimum of Packed Signed Word Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMINUB", AliasOf: "", Summary: "Minimum of Packed Unsigned Byte Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMINUD", AliasOf: "", Summary: "Minimum of Packed Unsigned Doubleword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMINUW", AliasOf: "", Summary: "Minimum of Packed Unsigned Word Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMOVMSKB", AliasOf: "", Summary: "Move Byte Mask", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMOVSXBD", AliasOf: "", Summary: "Move Packed Byte Integers to Doubleword Integers with Sign Extension", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMOVSXBQ", AliasOf: "", Summary: "Move Packed Byte Integers to Quadword Integers with Sign Extension", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMOVSXBW", AliasOf: "", Summary: "Move Packed Byte Integers to Word Integers with Sign Extension", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMOVSXDQ", AliasOf: "", Summary: "Move Packed Doubleword Integers to Quadword Integers with Sign Extension", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMOVSXWD", AliasOf: "", Summary: "Move Packed Word Integers to Doubleword Integers with Sign Extension", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMOVSXWQ", AliasOf: "", Summary: "Move Packed Word Integers to Quadword Integers with Sign Extension", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMOVZXBD", AliasOf: "", Summary: "Move Packed Byte Integers to Doubleword Integers with Zero Extension", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMOVZXBQ", AliasOf: "", Summary: "Move Packed Byte Integers to Quadword Integers with Zero Extension", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMOVZXBW", AliasOf: "", Summary: "Move Packed Byte Integers to Word Integers with Zero Extension", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMOVZXDQ", AliasOf: "", Summary: "Move Packed Doubleword Integers to Quadword Integers with Zero Extension", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMOVZXWD", AliasOf: "", Summary: "Move Packed Word Integers to Doubleword Integers with Zero Extension", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMOVZXWQ", AliasOf: "", Summary: "Move Packed Word Integers to Quadword Integers with Zero Extension", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMULDQ", AliasOf: "", Summary: "Multiply Packed Signed Doubleword Integers and Store Quadword Result", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMULHRSW", AliasOf: "", Summary: "Packed Multiply Signed Word Integers and Store High Result with Round and Scale", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMULHUW", AliasOf: "", Summary: "Multiply Packed Unsigned Word Integers and Store High Result", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMULHW", AliasOf: "", Summary: "Multiply Packed Signed Word Integers and Store High Result", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMULLD", AliasOf: "", Summary: "Multiply Packed Signed Doubleword Integers and Store Low Result", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMULLW", AliasOf: "", Summary: "Multiply Packed Signed Word Integers and Store Low Result", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPMULUDQ", AliasOf: "", Summary: "Multiply Packed Unsigned Doubleword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPOR", AliasOf: "", Summary: "Packed Bitwise Logical OR", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSADBW", AliasOf: "", Summary: "Compute Sum of Absolute Differences", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSHUFB", AliasOf: "", Summary: "Packed Shuffle Bytes", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSHUFD", AliasOf: "", Summary: "Shuffle Packed Doublewords", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSHUFHW", AliasOf: "", Summary: "Shuffle Packed High Words", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSHUFLW", AliasOf: "", Summary: "Shuffle Packed Low Words", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSIGNB", AliasOf: "", Summary: "Packed Sign of Byte Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSIGND", AliasOf: "", Summary: "Packed Sign of Doubleword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSIGNW", AliasOf: "", Summary: "Packed Sign of Word Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSLLD", AliasOf: "", Summary: "Shift Packed Doubleword Data Left Logical", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSLLDQ", AliasOf: "", Summary: "Shift Packed Double Quadword Left Logical", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSLLQ", AliasOf: "", Summary: "Shift Packed Quadword Data Left Logical", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSLLVD", AliasOf: "", Summary: "Variable Shift Packed Doubleword Data Left Logical", Forms: []inst.Form{inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSLLVQ", AliasOf: "", Summary: "Variable Shift Packed Quadword Data Left Logical", Forms: []inst.Form{inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSLLW", AliasOf: "", Summary: "Shift Packed Word Data Left Logical", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSRAD", AliasOf: "", Summary: "Shift Packed Doubleword Data Right Arithmetic", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSRAVD", AliasOf: "", Summary: "Variable Shift Packed Doubleword Data Right Arithmetic", Forms: []inst.Form{inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSRAW", AliasOf: "", Summary: "Shift Packed Word Data Right Arithmetic", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSRLD", AliasOf: "", Summary: "Shift Packed Doubleword Data Right Logical", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSRLDQ", AliasOf: "", Summary: "Shift Packed Double Quadword Right Logical", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSRLQ", AliasOf: "", Summary: "Shift Packed Quadword Data Right Logical", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSRLVD", AliasOf: "", Summary: "Variable Shift Packed Doubleword Data Right Logical", Forms: []inst.Form{inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSRLVQ", AliasOf: "", Summary: "Variable Shift Packed Quadword Data Right Logical", Forms: []inst.Form{inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSRLW", AliasOf: "", Summary: "Shift Packed Word Data Right Logical", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSUBB", AliasOf: "", Summary: "Subtract Packed Byte Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSUBD", AliasOf: "", Summary: "Subtract Packed Doubleword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSUBQ", AliasOf: "", Summary: "Subtract Packed Quadword Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSUBSB", AliasOf: "", Summary: "Subtract Packed Signed Byte Integers with Signed Saturation", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSUBSW", AliasOf: "", Summary: "Subtract Packed Signed Word Integers with Signed Saturation", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSUBUSB", AliasOf: "", Summary: "Subtract Packed Unsigned Byte Integers with Unsigned Saturation", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSUBUSW", AliasOf: "", Summary: "Subtract Packed Unsigned Word Integers with Unsigned Saturation", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPSUBW", AliasOf: "", Summary: "Subtract Packed Word Integers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPTEST", AliasOf: "", Summary: "Packed Logical Compare", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPUNPCKHBW", AliasOf: "", Summary: "Unpack and Interleave High-Order Bytes into Words", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPUNPCKHDQ", AliasOf: "", Summary: "Unpack and Interleave High-Order Doublewords into Quadwords", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPUNPCKHQDQ", AliasOf: "", Summary: "Unpack and Interleave High-Order Quadwords into Double Quadwords", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPUNPCKHWD", AliasOf: "", Summary: "Unpack and Interleave High-Order Words into Doublewords", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPUNPCKLBW", AliasOf: "", Summary: "Unpack and Interleave Low-Order Bytes into Words", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPUNPCKLDQ", AliasOf: "", Summary: "Unpack and Interleave Low-Order Doublewords into Quadwords", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPUNPCKLQDQ", AliasOf: "", Summary: "Unpack and Interleave Low-Order Quadwords into Double Quadwords", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPUNPCKLWD", AliasOf: "", Summary: "Unpack and Interleave Low-Order Words into Doublewords", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VPXOR", AliasOf: "", Summary: "Packed Bitwise Logical Exclusive OR", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX2"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VRCPPS", AliasOf: "", Summary: "Compute Approximate Reciprocals of Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VRCPSS", AliasOf: "", Summary: "Compute Approximate Reciprocal of Scalar Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VROUNDPD", AliasOf: "", Summary: "Round Packed Double Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VROUNDPS", AliasOf: "", Summary: "Round Packed Single Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VROUNDSD", AliasOf: "", Summary: "Round Scalar Double Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VROUNDSS", AliasOf: "", Summary: "Round Scalar Single Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VRSQRTPS", AliasOf: "", Summary: "Compute Reciprocals of Square Roots of Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VRSQRTSS", AliasOf: "", Summary: "Compute Reciprocal of Square Root of Scalar Single-Precision Floating-Point Value", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VSHUFPD", AliasOf: "", Summary: "Shuffle Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VSHUFPS", AliasOf: "", Summary: "Shuffle Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VSQRTPD", AliasOf: "", Summary: "Compute Square Roots of Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VSQRTPS", AliasOf: "", Summary: "Compute Square Roots of Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VSQRTSD", AliasOf: "", Summary: "Compute Square Root of Scalar Double-Precision Floating-Point Value", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VSQRTSS", AliasOf: "", Summary: "Compute Square Root of Scalar Single-Precision Floating-Point Value", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VSTMXCSR", AliasOf: "", Summary: "Store MXCSR Register State", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VSUBPD", AliasOf: "", Summary: "Subtract Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VSUBPS", AliasOf: "", Summary: "Subtract Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VSUBSD", AliasOf: "", Summary: "Subtract Scalar Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VSUBSS", AliasOf: "", Summary: "Subtract Scalar Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VTESTPD", AliasOf: "", Summary: "Packed Double-Precision Floating-Point Bit Test", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VTESTPS", AliasOf: "", Summary: "Packed Single-Precision Floating-Point Bit Test", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VUCOMISD", AliasOf: "", Summary: "Unordered Compare Scalar Double-Precision Floating-Point Values and Set EFLAGS", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VUCOMISS", AliasOf: "", Summary: "Unordered Compare Scalar Single-Precision Floating-Point Values and Set EFLAGS", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VUNPCKHPD", AliasOf: "", Summary: "Unpack and Interleave High Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VUNPCKHPS", AliasOf: "", Summary: "Unpack and Interleave High Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VUNPCKLPD", AliasOf: "", Summary: "Unpack and Interleave Low Packed Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VUNPCKLPS", AliasOf: "", Summary: "Unpack and Interleave Low Packed Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VXORPD", AliasOf: "", Summary: "Bitwise Logical XOR for Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VXORPS", AliasOf: "", Summary: "Bitwise Logical XOR for Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{inst.Operand{Type: "m256", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x1}, inst.Operand{Type: "ymm", Action: 0x2}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VZEROALL", AliasOf: "", Summary: "Zero All YMM Registers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "VZEROUPPER", AliasOf: "", Summary: "Zero Upper Bits of YMM Registers", Forms: []inst.Form{inst.Form{ISA: []string{"AVX"}, Operands: []inst.Operand{}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "XADDB", AliasOf: "", Summary: "Exchange and Add", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x3}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x3}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "XADDL", AliasOf: "", Summary: "Exchange and Add", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x3}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x3}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "XADDQ", AliasOf: "", Summary: "Exchange and Add", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x3}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x3}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "XADDW", AliasOf: "", Summary: "Exchange and Add", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x3}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x3}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "XCHGB", AliasOf: "", Summary: "Exchange Register/Memory with Register", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x3}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x3}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x3}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "XCHGL", AliasOf: "", Summary: "Exchange Register/Memory with Register", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x3}, inst.Operand{Type: "eax", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "eax", Action: 0x3}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x3}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x3}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x3}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "XCHGQ", AliasOf: "", Summary: "Exchange Register/Memory with Register", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x3}, inst.Operand{Type: "rax", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "rax", Action: 0x3}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x3}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x3}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x3}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "XCHGW", AliasOf: "", Summary: "Exchange Register/Memory with Register", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x3}, inst.Operand{Type: "ax", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "ax", Action: 0x3}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x3}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x3}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x3}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "XGETBV", AliasOf: "", Summary: "Get Value of Extended Control Register", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "eax", Action: 0x2}, inst.ImplicitOperand{Register: "ecx", Action: 0x1}, inst.ImplicitOperand{Register: "edx", Action: 0x2}}}}}, inst.Instruction{Opcode: "XLAT", AliasOf: "", Summary: "Table Look-up Translation", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{}, ImplicitOperands: []inst.ImplicitOperand{inst.ImplicitOperand{Register: "al", Action: 0x3}, inst.ImplicitOperand{Register: "ebx", Action: 0x1}}}}}, inst.Instruction{Opcode: "XORB", AliasOf: "", Summary: "Logical Exclusive OR", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "al", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m8", Action: 0x1}, inst.Operand{Type: "r8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r8", Action: 0x1}, inst.Operand{Type: "m8", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "XORL", AliasOf: "", Summary: "Logical Exclusive OR", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "eax", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m32", Action: 0x1}, inst.Operand{Type: "r32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r32", Action: 0x1}, inst.Operand{Type: "m32", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "XORPD", AliasOf: "", Summary: "Bitwise Logical XOR for Double-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE2"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "XORPS", AliasOf: "", Summary: "Bitwise Logical XOR for Single-Precision Floating-Point Values", Forms: []inst.Form{inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "xmm", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string{"SSE"}, Operands: []inst.Operand{inst.Operand{Type: "m128", Action: 0x1}, inst.Operand{Type: "xmm", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "XORQ", AliasOf: "", Summary: "Logical Exclusive OR", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "rax", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m64", Action: 0x1}, inst.Operand{Type: "r64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm32", Action: 0x0}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r64", Action: 0x1}, inst.Operand{Type: "m64", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}, inst.Instruction{Opcode: "XORW", AliasOf: "", Summary: "Logical Exclusive OR", Forms: []inst.Form{inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}, inst.Operand{Type: "ax", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "m16", Action: 0x1}, inst.Operand{Type: "r16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm8", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "imm16", Action: 0x0}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}, inst.Form{ISA: []string(nil), Operands: []inst.Operand{inst.Operand{Type: "r16", Action: 0x1}, inst.Operand{Type: "m16", Action: 0x3}}, ImplicitOperands: []inst.ImplicitOperand(nil)}}}} func TestVerifyInstructionsList(t *testing.T) { if !reflect.DeepEqual(raw, inst.Instructions) { diff --git a/internal/load/load.go b/internal/load/load.go index 674fdde..fbc87fd 100644 --- a/internal/load/load.go +++ b/internal/load/load.go @@ -2,6 +2,7 @@ package load import ( "path/filepath" + "reflect" "sort" "strconv" "strings" @@ -75,6 +76,11 @@ func (l *Loader) Load() ([]inst.Instruction, error) { im[from] = &cpy } + // Dedupe forms. + for _, i := range im { + i.Forms = dedupe(i.Forms) + } + // Convert to a slice, sorted by opcode. is := make([]inst.Instruction, 0, len(im)) for _, i := range im { @@ -168,6 +174,20 @@ func (l Loader) include(f opcodesxml.Form) bool { // case "movabs": return false + // Only one XLAT form is supported. + // + // Reference: https://github.com/golang/arch/blob/b19384d3c130858bb31a343ea8fce26be71b5998/x86/x86.v0.2.csv#L2221-L2222 + // + // "XLATB","XLAT","xlat","D7","V","V","","ignoreREXW","","","" + // "XLATB","XLAT","xlat","REX.W D7","N.E.","V","","pseudo","","","" + // + // Reference: https://github.com/golang/go/blob/b3294d9491b898396e134bad5412d85337c37b64/src/cmd/internal/obj/x86/asm6.go#L1519 + // + // {AXLAT, ynone, Px, opBytes{0xd7}}, + // + // TODO(mbm): confirm the Px prefix means non REX mode + case "xlatb": + return f.Encoding.REX == nil } return true @@ -379,3 +399,21 @@ func operandsize(op opcodesxml.Operand) int { } return 0 } + +// dedupe a list of forms. +func dedupe(fs []inst.Form) []inst.Form { + uniq := make([]inst.Form, 0, len(fs)) + for _, f := range fs { + have := false + for _, u := range uniq { + if reflect.DeepEqual(u, f) { + have = true + break + } + } + if !have { + uniq = append(uniq, f) + } + } + return uniq +} diff --git a/x86/zctors.go b/x86/zctors.go index 371e97c..7066431 100644 --- a/x86/zctors.go +++ b/x86/zctors.go @@ -20,18 +20,49 @@ import ( func ADCB(imr, amr operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(imr) && operand.IsAl(amr): + return &avo.Instruction{ + Opcode: "ADCB", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsImm8(imr) && operand.IsR8(amr): + return &avo.Instruction{ + Opcode: "ADCB", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsR8(imr) && operand.IsR8(amr): + return &avo.Instruction{ + Opcode: "ADCB", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{imr, amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsM8(imr) && operand.IsR8(amr): + return &avo.Instruction{ + Opcode: "ADCB", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{imr, amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsImm8(imr) && operand.IsM8(amr): + return &avo.Instruction{ + Opcode: "ADCB", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsR8(imr) && operand.IsM8(amr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "ADCB", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{imr, amr}, + Outputs: []operand.Op{amr}, + }, nil } - return &avo.Instruction{ - Opcode: "ADCB", - Operands: []operand.Op{imr, amr}, - }, nil + return nil, ErrBadOperandTypes } // ADCL: Add with Carry. @@ -49,20 +80,63 @@ func ADCB(imr, amr operand.Op) (*avo.Instruction, error) { func ADCL(imr, emr operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm32(imr) && operand.IsEax(emr): + return &avo.Instruction{ + Opcode: "ADCL", + Operands: []operand.Op{imr, emr}, + Inputs: []operand.Op{emr}, + Outputs: []operand.Op{emr}, + }, nil case operand.IsImm8(imr) && operand.IsR32(emr): + return &avo.Instruction{ + Opcode: "ADCL", + Operands: []operand.Op{imr, emr}, + Inputs: []operand.Op{emr}, + Outputs: []operand.Op{emr}, + }, nil case operand.IsImm32(imr) && operand.IsR32(emr): + return &avo.Instruction{ + Opcode: "ADCL", + Operands: []operand.Op{imr, emr}, + Inputs: []operand.Op{emr}, + Outputs: []operand.Op{emr}, + }, nil case operand.IsR32(imr) && operand.IsR32(emr): + return &avo.Instruction{ + Opcode: "ADCL", + Operands: []operand.Op{imr, emr}, + Inputs: []operand.Op{imr, emr}, + Outputs: []operand.Op{emr}, + }, nil case operand.IsM32(imr) && operand.IsR32(emr): + return &avo.Instruction{ + Opcode: "ADCL", + Operands: []operand.Op{imr, emr}, + Inputs: []operand.Op{imr, emr}, + Outputs: []operand.Op{emr}, + }, nil case operand.IsImm8(imr) && operand.IsM32(emr): + return &avo.Instruction{ + Opcode: "ADCL", + Operands: []operand.Op{imr, emr}, + Inputs: []operand.Op{emr}, + Outputs: []operand.Op{emr}, + }, nil case operand.IsImm32(imr) && operand.IsM32(emr): + return &avo.Instruction{ + Opcode: "ADCL", + Operands: []operand.Op{imr, emr}, + Inputs: []operand.Op{emr}, + Outputs: []operand.Op{emr}, + }, nil case operand.IsR32(imr) && operand.IsM32(emr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "ADCL", + Operands: []operand.Op{imr, emr}, + Inputs: []operand.Op{imr, emr}, + Outputs: []operand.Op{emr}, + }, nil } - return &avo.Instruction{ - Opcode: "ADCL", - Operands: []operand.Op{imr, emr}, - }, nil + return nil, ErrBadOperandTypes } // ADCQ: Add with Carry. @@ -80,20 +154,63 @@ func ADCL(imr, emr operand.Op) (*avo.Instruction, error) { func ADCQ(imr, mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm32(imr) && operand.IsRax(mr): + return &avo.Instruction{ + Opcode: "ADCQ", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(imr) && operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "ADCQ", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm32(imr) && operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "ADCQ", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsR64(imr) && operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "ADCQ", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{imr, mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsM64(imr) && operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "ADCQ", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{imr, mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(imr) && operand.IsM64(mr): + return &avo.Instruction{ + Opcode: "ADCQ", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm32(imr) && operand.IsM64(mr): + return &avo.Instruction{ + Opcode: "ADCQ", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsR64(imr) && operand.IsM64(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "ADCQ", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{imr, mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "ADCQ", - Operands: []operand.Op{imr, mr}, - }, nil + return nil, ErrBadOperandTypes } // ADCW: Add with Carry. @@ -111,20 +228,63 @@ func ADCQ(imr, mr operand.Op) (*avo.Instruction, error) { func ADCW(imr, amr operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm16(imr) && operand.IsAx(amr): + return &avo.Instruction{ + Opcode: "ADCW", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsImm8(imr) && operand.IsR16(amr): + return &avo.Instruction{ + Opcode: "ADCW", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsImm16(imr) && operand.IsR16(amr): + return &avo.Instruction{ + Opcode: "ADCW", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsR16(imr) && operand.IsR16(amr): + return &avo.Instruction{ + Opcode: "ADCW", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{imr, amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsM16(imr) && operand.IsR16(amr): + return &avo.Instruction{ + Opcode: "ADCW", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{imr, amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsImm8(imr) && operand.IsM16(amr): + return &avo.Instruction{ + Opcode: "ADCW", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsImm16(imr) && operand.IsM16(amr): + return &avo.Instruction{ + Opcode: "ADCW", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsR16(imr) && operand.IsM16(amr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "ADCW", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{imr, amr}, + Outputs: []operand.Op{amr}, + }, nil } - return &avo.Instruction{ - Opcode: "ADCW", - Operands: []operand.Op{imr, amr}, - }, nil + return nil, ErrBadOperandTypes } // ADCXL: Unsigned Integer Addition of Two Operands with Carry Flag. @@ -136,14 +296,21 @@ func ADCW(imr, amr operand.Op) (*avo.Instruction, error) { func ADCXL(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR32(mr) && operand.IsR32(r): + return &avo.Instruction{ + Opcode: "ADCXL", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM32(mr) && operand.IsR32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "ADCXL", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "ADCXL", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // ADCXQ: Unsigned Integer Addition of Two Operands with Carry Flag. @@ -155,14 +322,21 @@ func ADCXL(mr, r operand.Op) (*avo.Instruction, error) { func ADCXQ(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR64(mr) && operand.IsR64(r): + return &avo.Instruction{ + Opcode: "ADCXQ", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM64(mr) && operand.IsR64(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "ADCXQ", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "ADCXQ", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // ADDB: Add. @@ -178,18 +352,49 @@ func ADCXQ(mr, r operand.Op) (*avo.Instruction, error) { func ADDB(imr, amr operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(imr) && operand.IsAl(amr): + return &avo.Instruction{ + Opcode: "ADDB", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsImm8(imr) && operand.IsR8(amr): + return &avo.Instruction{ + Opcode: "ADDB", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsR8(imr) && operand.IsR8(amr): + return &avo.Instruction{ + Opcode: "ADDB", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{imr, amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsM8(imr) && operand.IsR8(amr): + return &avo.Instruction{ + Opcode: "ADDB", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{imr, amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsImm8(imr) && operand.IsM8(amr): + return &avo.Instruction{ + Opcode: "ADDB", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsR8(imr) && operand.IsM8(amr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "ADDB", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{imr, amr}, + Outputs: []operand.Op{amr}, + }, nil } - return &avo.Instruction{ - Opcode: "ADDB", - Operands: []operand.Op{imr, amr}, - }, nil + return nil, ErrBadOperandTypes } // ADDL: Add. @@ -207,20 +412,63 @@ func ADDB(imr, amr operand.Op) (*avo.Instruction, error) { func ADDL(imr, emr operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm32(imr) && operand.IsEax(emr): + return &avo.Instruction{ + Opcode: "ADDL", + Operands: []operand.Op{imr, emr}, + Inputs: []operand.Op{emr}, + Outputs: []operand.Op{emr}, + }, nil case operand.IsImm8(imr) && operand.IsR32(emr): + return &avo.Instruction{ + Opcode: "ADDL", + Operands: []operand.Op{imr, emr}, + Inputs: []operand.Op{emr}, + Outputs: []operand.Op{emr}, + }, nil case operand.IsImm32(imr) && operand.IsR32(emr): + return &avo.Instruction{ + Opcode: "ADDL", + Operands: []operand.Op{imr, emr}, + Inputs: []operand.Op{emr}, + Outputs: []operand.Op{emr}, + }, nil case operand.IsR32(imr) && operand.IsR32(emr): + return &avo.Instruction{ + Opcode: "ADDL", + Operands: []operand.Op{imr, emr}, + Inputs: []operand.Op{imr, emr}, + Outputs: []operand.Op{emr}, + }, nil case operand.IsM32(imr) && operand.IsR32(emr): + return &avo.Instruction{ + Opcode: "ADDL", + Operands: []operand.Op{imr, emr}, + Inputs: []operand.Op{imr, emr}, + Outputs: []operand.Op{emr}, + }, nil case operand.IsImm8(imr) && operand.IsM32(emr): + return &avo.Instruction{ + Opcode: "ADDL", + Operands: []operand.Op{imr, emr}, + Inputs: []operand.Op{emr}, + Outputs: []operand.Op{emr}, + }, nil case operand.IsImm32(imr) && operand.IsM32(emr): + return &avo.Instruction{ + Opcode: "ADDL", + Operands: []operand.Op{imr, emr}, + Inputs: []operand.Op{emr}, + Outputs: []operand.Op{emr}, + }, nil case operand.IsR32(imr) && operand.IsM32(emr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "ADDL", + Operands: []operand.Op{imr, emr}, + Inputs: []operand.Op{imr, emr}, + Outputs: []operand.Op{emr}, + }, nil } - return &avo.Instruction{ - Opcode: "ADDL", - Operands: []operand.Op{imr, emr}, - }, nil + return nil, ErrBadOperandTypes } // ADDPD: Add Packed Double-Precision Floating-Point Values. @@ -232,14 +480,21 @@ func ADDL(imr, emr operand.Op) (*avo.Instruction, error) { func ADDPD(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "ADDPD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "ADDPD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "ADDPD", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // ADDPS: Add Packed Single-Precision Floating-Point Values. @@ -251,14 +506,21 @@ func ADDPD(mx, x operand.Op) (*avo.Instruction, error) { func ADDPS(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "ADDPS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "ADDPS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "ADDPS", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // ADDQ: Add. @@ -276,20 +538,63 @@ func ADDPS(mx, x operand.Op) (*avo.Instruction, error) { func ADDQ(imr, mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm32(imr) && operand.IsRax(mr): + return &avo.Instruction{ + Opcode: "ADDQ", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(imr) && operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "ADDQ", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm32(imr) && operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "ADDQ", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsR64(imr) && operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "ADDQ", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{imr, mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsM64(imr) && operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "ADDQ", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{imr, mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(imr) && operand.IsM64(mr): + return &avo.Instruction{ + Opcode: "ADDQ", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm32(imr) && operand.IsM64(mr): + return &avo.Instruction{ + Opcode: "ADDQ", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsR64(imr) && operand.IsM64(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "ADDQ", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{imr, mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "ADDQ", - Operands: []operand.Op{imr, mr}, - }, nil + return nil, ErrBadOperandTypes } // ADDSD: Add Scalar Double-Precision Floating-Point Values. @@ -301,14 +606,21 @@ func ADDQ(imr, mr operand.Op) (*avo.Instruction, error) { func ADDSD(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "ADDSD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM64(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "ADDSD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "ADDSD", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // ADDSS: Add Scalar Single-Precision Floating-Point Values. @@ -320,14 +632,21 @@ func ADDSD(mx, x operand.Op) (*avo.Instruction, error) { func ADDSS(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "ADDSS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM32(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "ADDSS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "ADDSS", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // ADDSUBPD: Packed Double-FP Add/Subtract. @@ -339,14 +658,21 @@ func ADDSS(mx, x operand.Op) (*avo.Instruction, error) { func ADDSUBPD(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "ADDSUBPD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "ADDSUBPD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "ADDSUBPD", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // ADDSUBPS: Packed Single-FP Add/Subtract. @@ -358,14 +684,21 @@ func ADDSUBPD(mx, x operand.Op) (*avo.Instruction, error) { func ADDSUBPS(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "ADDSUBPS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "ADDSUBPS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "ADDSUBPS", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // ADDW: Add. @@ -383,20 +716,63 @@ func ADDSUBPS(mx, x operand.Op) (*avo.Instruction, error) { func ADDW(imr, amr operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm16(imr) && operand.IsAx(amr): + return &avo.Instruction{ + Opcode: "ADDW", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsImm8(imr) && operand.IsR16(amr): + return &avo.Instruction{ + Opcode: "ADDW", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsImm16(imr) && operand.IsR16(amr): + return &avo.Instruction{ + Opcode: "ADDW", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsR16(imr) && operand.IsR16(amr): + return &avo.Instruction{ + Opcode: "ADDW", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{imr, amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsM16(imr) && operand.IsR16(amr): + return &avo.Instruction{ + Opcode: "ADDW", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{imr, amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsImm8(imr) && operand.IsM16(amr): + return &avo.Instruction{ + Opcode: "ADDW", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsImm16(imr) && operand.IsM16(amr): + return &avo.Instruction{ + Opcode: "ADDW", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsR16(imr) && operand.IsM16(amr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "ADDW", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{imr, amr}, + Outputs: []operand.Op{amr}, + }, nil } - return &avo.Instruction{ - Opcode: "ADDW", - Operands: []operand.Op{imr, amr}, - }, nil + return nil, ErrBadOperandTypes } // ADOXL: Unsigned Integer Addition of Two Operands with Overflow Flag. @@ -408,14 +784,21 @@ func ADDW(imr, amr operand.Op) (*avo.Instruction, error) { func ADOXL(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR32(mr) && operand.IsR32(r): + return &avo.Instruction{ + Opcode: "ADOXL", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM32(mr) && operand.IsR32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "ADOXL", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "ADOXL", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // ADOXQ: Unsigned Integer Addition of Two Operands with Overflow Flag. @@ -427,14 +810,21 @@ func ADOXL(mr, r operand.Op) (*avo.Instruction, error) { func ADOXQ(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR64(mr) && operand.IsR64(r): + return &avo.Instruction{ + Opcode: "ADOXQ", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM64(mr) && operand.IsR64(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "ADOXQ", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "ADOXQ", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // AESDEC: Perform One Round of an AES Decryption Flow. @@ -446,14 +836,21 @@ func ADOXQ(mr, r operand.Op) (*avo.Instruction, error) { func AESDEC(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "AESDEC", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "AESDEC", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "AESDEC", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // AESDECLAST: Perform Last Round of an AES Decryption Flow. @@ -465,14 +862,21 @@ func AESDEC(mx, x operand.Op) (*avo.Instruction, error) { func AESDECLAST(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "AESDECLAST", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "AESDECLAST", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "AESDECLAST", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // AESENC: Perform One Round of an AES Encryption Flow. @@ -484,14 +888,21 @@ func AESDECLAST(mx, x operand.Op) (*avo.Instruction, error) { func AESENC(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "AESENC", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "AESENC", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "AESENC", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // AESENCLAST: Perform Last Round of an AES Encryption Flow. @@ -503,14 +914,21 @@ func AESENC(mx, x operand.Op) (*avo.Instruction, error) { func AESENCLAST(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "AESENCLAST", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "AESENCLAST", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "AESENCLAST", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // AESIMC: Perform the AES InvMixColumn Transformation. @@ -522,14 +940,21 @@ func AESENCLAST(mx, x operand.Op) (*avo.Instruction, error) { func AESIMC(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "AESIMC", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "AESIMC", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "AESIMC", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // AESKEYGENASSIST: AES Round Key Generation Assist. @@ -541,14 +966,21 @@ func AESIMC(mx, x operand.Op) (*avo.Instruction, error) { func AESKEYGENASSIST(i, mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "AESKEYGENASSIST", + Operands: []operand.Op{i, mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil case operand.IsImm8(i) && operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "AESKEYGENASSIST", + Operands: []operand.Op{i, mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "AESKEYGENASSIST", - Operands: []operand.Op{i, mx, x}, - }, nil + return nil, ErrBadOperandTypes } // ANDB: Logical AND. @@ -564,18 +996,49 @@ func AESKEYGENASSIST(i, mx, x operand.Op) (*avo.Instruction, error) { func ANDB(imr, amr operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(imr) && operand.IsAl(amr): + return &avo.Instruction{ + Opcode: "ANDB", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsImm8(imr) && operand.IsR8(amr): + return &avo.Instruction{ + Opcode: "ANDB", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsR8(imr) && operand.IsR8(amr): + return &avo.Instruction{ + Opcode: "ANDB", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{imr, amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsM8(imr) && operand.IsR8(amr): + return &avo.Instruction{ + Opcode: "ANDB", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{imr, amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsImm8(imr) && operand.IsM8(amr): + return &avo.Instruction{ + Opcode: "ANDB", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsR8(imr) && operand.IsM8(amr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "ANDB", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{imr, amr}, + Outputs: []operand.Op{amr}, + }, nil } - return &avo.Instruction{ - Opcode: "ANDB", - Operands: []operand.Op{imr, amr}, - }, nil + return nil, ErrBadOperandTypes } // ANDL: Logical AND. @@ -593,20 +1056,63 @@ func ANDB(imr, amr operand.Op) (*avo.Instruction, error) { func ANDL(imr, emr operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm32(imr) && operand.IsEax(emr): + return &avo.Instruction{ + Opcode: "ANDL", + Operands: []operand.Op{imr, emr}, + Inputs: []operand.Op{emr}, + Outputs: []operand.Op{emr}, + }, nil case operand.IsImm8(imr) && operand.IsR32(emr): + return &avo.Instruction{ + Opcode: "ANDL", + Operands: []operand.Op{imr, emr}, + Inputs: []operand.Op{emr}, + Outputs: []operand.Op{emr}, + }, nil case operand.IsImm32(imr) && operand.IsR32(emr): + return &avo.Instruction{ + Opcode: "ANDL", + Operands: []operand.Op{imr, emr}, + Inputs: []operand.Op{emr}, + Outputs: []operand.Op{emr}, + }, nil case operand.IsR32(imr) && operand.IsR32(emr): + return &avo.Instruction{ + Opcode: "ANDL", + Operands: []operand.Op{imr, emr}, + Inputs: []operand.Op{imr, emr}, + Outputs: []operand.Op{emr}, + }, nil case operand.IsM32(imr) && operand.IsR32(emr): + return &avo.Instruction{ + Opcode: "ANDL", + Operands: []operand.Op{imr, emr}, + Inputs: []operand.Op{imr, emr}, + Outputs: []operand.Op{emr}, + }, nil case operand.IsImm8(imr) && operand.IsM32(emr): + return &avo.Instruction{ + Opcode: "ANDL", + Operands: []operand.Op{imr, emr}, + Inputs: []operand.Op{emr}, + Outputs: []operand.Op{emr}, + }, nil case operand.IsImm32(imr) && operand.IsM32(emr): + return &avo.Instruction{ + Opcode: "ANDL", + Operands: []operand.Op{imr, emr}, + Inputs: []operand.Op{emr}, + Outputs: []operand.Op{emr}, + }, nil case operand.IsR32(imr) && operand.IsM32(emr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "ANDL", + Operands: []operand.Op{imr, emr}, + Inputs: []operand.Op{imr, emr}, + Outputs: []operand.Op{emr}, + }, nil } - return &avo.Instruction{ - Opcode: "ANDL", - Operands: []operand.Op{imr, emr}, - }, nil + return nil, ErrBadOperandTypes } // ANDNL: Logical AND NOT. @@ -618,14 +1124,21 @@ func ANDL(imr, emr operand.Op) (*avo.Instruction, error) { func ANDNL(mr, r, r1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsR32(mr) && operand.IsR32(r) && operand.IsR32(r1): + return &avo.Instruction{ + Opcode: "ANDNL", + Operands: []operand.Op{mr, r, r1}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r1}, + }, nil case operand.IsM32(mr) && operand.IsR32(r) && operand.IsR32(r1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "ANDNL", + Operands: []operand.Op{mr, r, r1}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r1}, + }, nil } - return &avo.Instruction{ - Opcode: "ANDNL", - Operands: []operand.Op{mr, r, r1}, - }, nil + return nil, ErrBadOperandTypes } // ANDNPD: Bitwise Logical AND NOT of Packed Double-Precision Floating-Point Values. @@ -637,14 +1150,21 @@ func ANDNL(mr, r, r1 operand.Op) (*avo.Instruction, error) { func ANDNPD(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "ANDNPD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "ANDNPD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "ANDNPD", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // ANDNPS: Bitwise Logical AND NOT of Packed Single-Precision Floating-Point Values. @@ -656,14 +1176,21 @@ func ANDNPD(mx, x operand.Op) (*avo.Instruction, error) { func ANDNPS(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "ANDNPS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "ANDNPS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "ANDNPS", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // ANDNQ: Logical AND NOT. @@ -675,14 +1202,21 @@ func ANDNPS(mx, x operand.Op) (*avo.Instruction, error) { func ANDNQ(mr, r, r1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsR64(mr) && operand.IsR64(r) && operand.IsR64(r1): + return &avo.Instruction{ + Opcode: "ANDNQ", + Operands: []operand.Op{mr, r, r1}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r1}, + }, nil case operand.IsM64(mr) && operand.IsR64(r) && operand.IsR64(r1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "ANDNQ", + Operands: []operand.Op{mr, r, r1}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r1}, + }, nil } - return &avo.Instruction{ - Opcode: "ANDNQ", - Operands: []operand.Op{mr, r, r1}, - }, nil + return nil, ErrBadOperandTypes } // ANDPD: Bitwise Logical AND of Packed Double-Precision Floating-Point Values. @@ -694,14 +1228,21 @@ func ANDNQ(mr, r, r1 operand.Op) (*avo.Instruction, error) { func ANDPD(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "ANDPD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "ANDPD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "ANDPD", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // ANDPS: Bitwise Logical AND of Packed Single-Precision Floating-Point Values. @@ -713,14 +1254,21 @@ func ANDPD(mx, x operand.Op) (*avo.Instruction, error) { func ANDPS(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "ANDPS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "ANDPS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "ANDPS", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // ANDQ: Logical AND. @@ -738,20 +1286,63 @@ func ANDPS(mx, x operand.Op) (*avo.Instruction, error) { func ANDQ(imr, mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm32(imr) && operand.IsRax(mr): + return &avo.Instruction{ + Opcode: "ANDQ", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(imr) && operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "ANDQ", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm32(imr) && operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "ANDQ", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsR64(imr) && operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "ANDQ", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{imr, mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsM64(imr) && operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "ANDQ", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{imr, mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(imr) && operand.IsM64(mr): + return &avo.Instruction{ + Opcode: "ANDQ", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm32(imr) && operand.IsM64(mr): + return &avo.Instruction{ + Opcode: "ANDQ", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsR64(imr) && operand.IsM64(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "ANDQ", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{imr, mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "ANDQ", - Operands: []operand.Op{imr, mr}, - }, nil + return nil, ErrBadOperandTypes } // ANDW: Logical AND. @@ -769,20 +1360,63 @@ func ANDQ(imr, mr operand.Op) (*avo.Instruction, error) { func ANDW(imr, amr operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm16(imr) && operand.IsAx(amr): + return &avo.Instruction{ + Opcode: "ANDW", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsImm8(imr) && operand.IsR16(amr): + return &avo.Instruction{ + Opcode: "ANDW", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsImm16(imr) && operand.IsR16(amr): + return &avo.Instruction{ + Opcode: "ANDW", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsR16(imr) && operand.IsR16(amr): + return &avo.Instruction{ + Opcode: "ANDW", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{imr, amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsM16(imr) && operand.IsR16(amr): + return &avo.Instruction{ + Opcode: "ANDW", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{imr, amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsImm8(imr) && operand.IsM16(amr): + return &avo.Instruction{ + Opcode: "ANDW", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsImm16(imr) && operand.IsM16(amr): + return &avo.Instruction{ + Opcode: "ANDW", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsR16(imr) && operand.IsM16(amr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "ANDW", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{imr, amr}, + Outputs: []operand.Op{amr}, + }, nil } - return &avo.Instruction{ - Opcode: "ANDW", - Operands: []operand.Op{imr, amr}, - }, nil + return nil, ErrBadOperandTypes } // BEXTRL: Bit Field Extract. @@ -794,14 +1428,21 @@ func ANDW(imr, amr operand.Op) (*avo.Instruction, error) { func BEXTRL(r, mr, r1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsR32(r) && operand.IsR32(mr) && operand.IsR32(r1): + return &avo.Instruction{ + Opcode: "BEXTRL", + Operands: []operand.Op{r, mr, r1}, + Inputs: []operand.Op{r, mr}, + Outputs: []operand.Op{r1}, + }, nil case operand.IsR32(r) && operand.IsM32(mr) && operand.IsR32(r1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "BEXTRL", + Operands: []operand.Op{r, mr, r1}, + Inputs: []operand.Op{r, mr}, + Outputs: []operand.Op{r1}, + }, nil } - return &avo.Instruction{ - Opcode: "BEXTRL", - Operands: []operand.Op{r, mr, r1}, - }, nil + return nil, ErrBadOperandTypes } // BEXTRQ: Bit Field Extract. @@ -813,14 +1454,21 @@ func BEXTRL(r, mr, r1 operand.Op) (*avo.Instruction, error) { func BEXTRQ(r, mr, r1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsR64(r) && operand.IsR64(mr) && operand.IsR64(r1): + return &avo.Instruction{ + Opcode: "BEXTRQ", + Operands: []operand.Op{r, mr, r1}, + Inputs: []operand.Op{r, mr}, + Outputs: []operand.Op{r1}, + }, nil case operand.IsR64(r) && operand.IsM64(mr) && operand.IsR64(r1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "BEXTRQ", + Operands: []operand.Op{r, mr, r1}, + Inputs: []operand.Op{r, mr}, + Outputs: []operand.Op{r1}, + }, nil } - return &avo.Instruction{ - Opcode: "BEXTRQ", - Operands: []operand.Op{r, mr, r1}, - }, nil + return nil, ErrBadOperandTypes } // BLENDPD: Blend Packed Double Precision Floating-Point Values. @@ -832,14 +1480,21 @@ func BEXTRQ(r, mr, r1 operand.Op) (*avo.Instruction, error) { func BLENDPD(i, mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "BLENDPD", + Operands: []operand.Op{i, mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsImm8(i) && operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "BLENDPD", + Operands: []operand.Op{i, mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "BLENDPD", - Operands: []operand.Op{i, mx, x}, - }, nil + return nil, ErrBadOperandTypes } // BLENDPS: Blend Packed Single Precision Floating-Point Values. @@ -851,14 +1506,21 @@ func BLENDPD(i, mx, x operand.Op) (*avo.Instruction, error) { func BLENDPS(i, mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "BLENDPS", + Operands: []operand.Op{i, mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsImm8(i) && operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "BLENDPS", + Operands: []operand.Op{i, mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "BLENDPS", - Operands: []operand.Op{i, mx, x}, - }, nil + return nil, ErrBadOperandTypes } // BLENDVPD: Variable Blend Packed Double Precision Floating-Point Values. @@ -870,14 +1532,21 @@ func BLENDPS(i, mx, x operand.Op) (*avo.Instruction, error) { func BLENDVPD(x, mx, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm0(x) && operand.IsXmm(mx) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "BLENDVPD", + Operands: []operand.Op{x, mx, x1}, + Inputs: []operand.Op{x, mx, x1}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsXmm0(x) && operand.IsM128(mx) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "BLENDVPD", + Operands: []operand.Op{x, mx, x1}, + Inputs: []operand.Op{x, mx, x1}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "BLENDVPD", - Operands: []operand.Op{x, mx, x1}, - }, nil + return nil, ErrBadOperandTypes } // BLENDVPS: Variable Blend Packed Single Precision Floating-Point Values. @@ -889,14 +1558,21 @@ func BLENDVPD(x, mx, x1 operand.Op) (*avo.Instruction, error) { func BLENDVPS(x, mx, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm0(x) && operand.IsXmm(mx) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "BLENDVPS", + Operands: []operand.Op{x, mx, x1}, + Inputs: []operand.Op{x, mx, x1}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsXmm0(x) && operand.IsM128(mx) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "BLENDVPS", + Operands: []operand.Op{x, mx, x1}, + Inputs: []operand.Op{x, mx, x1}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "BLENDVPS", - Operands: []operand.Op{x, mx, x1}, - }, nil + return nil, ErrBadOperandTypes } // BLSIL: Isolate Lowest Set Bit. @@ -908,14 +1584,21 @@ func BLENDVPS(x, mx, x1 operand.Op) (*avo.Instruction, error) { func BLSIL(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR32(mr) && operand.IsR32(r): + return &avo.Instruction{ + Opcode: "BLSIL", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM32(mr) && operand.IsR32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "BLSIL", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "BLSIL", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // BLSIQ: Isolate Lowest Set Bit. @@ -927,14 +1610,21 @@ func BLSIL(mr, r operand.Op) (*avo.Instruction, error) { func BLSIQ(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR64(mr) && operand.IsR64(r): + return &avo.Instruction{ + Opcode: "BLSIQ", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM64(mr) && operand.IsR64(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "BLSIQ", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "BLSIQ", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // BLSMSKL: Mask From Lowest Set Bit. @@ -946,14 +1636,21 @@ func BLSIQ(mr, r operand.Op) (*avo.Instruction, error) { func BLSMSKL(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR32(mr) && operand.IsR32(r): + return &avo.Instruction{ + Opcode: "BLSMSKL", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM32(mr) && operand.IsR32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "BLSMSKL", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "BLSMSKL", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // BLSMSKQ: Mask From Lowest Set Bit. @@ -965,14 +1662,21 @@ func BLSMSKL(mr, r operand.Op) (*avo.Instruction, error) { func BLSMSKQ(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR64(mr) && operand.IsR64(r): + return &avo.Instruction{ + Opcode: "BLSMSKQ", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM64(mr) && operand.IsR64(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "BLSMSKQ", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "BLSMSKQ", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // BLSRL: Reset Lowest Set Bit. @@ -984,14 +1688,21 @@ func BLSMSKQ(mr, r operand.Op) (*avo.Instruction, error) { func BLSRL(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR32(mr) && operand.IsR32(r): + return &avo.Instruction{ + Opcode: "BLSRL", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM32(mr) && operand.IsR32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "BLSRL", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "BLSRL", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // BLSRQ: Reset Lowest Set Bit. @@ -1003,14 +1714,21 @@ func BLSRL(mr, r operand.Op) (*avo.Instruction, error) { func BLSRQ(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR64(mr) && operand.IsR64(r): + return &avo.Instruction{ + Opcode: "BLSRQ", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM64(mr) && operand.IsR64(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "BLSRQ", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "BLSRQ", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // BSFL: Bit Scan Forward. @@ -1022,14 +1740,21 @@ func BLSRQ(mr, r operand.Op) (*avo.Instruction, error) { func BSFL(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR32(mr) && operand.IsR32(r): + return &avo.Instruction{ + Opcode: "BSFL", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM32(mr) && operand.IsR32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "BSFL", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "BSFL", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // BSFQ: Bit Scan Forward. @@ -1041,14 +1766,21 @@ func BSFL(mr, r operand.Op) (*avo.Instruction, error) { func BSFQ(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR64(mr) && operand.IsR64(r): + return &avo.Instruction{ + Opcode: "BSFQ", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM64(mr) && operand.IsR64(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "BSFQ", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "BSFQ", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // BSFW: Bit Scan Forward. @@ -1060,14 +1792,21 @@ func BSFQ(mr, r operand.Op) (*avo.Instruction, error) { func BSFW(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR16(mr) && operand.IsR16(r): + return &avo.Instruction{ + Opcode: "BSFW", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM16(mr) && operand.IsR16(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "BSFW", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "BSFW", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // BSRL: Bit Scan Reverse. @@ -1079,14 +1818,21 @@ func BSFW(mr, r operand.Op) (*avo.Instruction, error) { func BSRL(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR32(mr) && operand.IsR32(r): + return &avo.Instruction{ + Opcode: "BSRL", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM32(mr) && operand.IsR32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "BSRL", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "BSRL", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // BSRQ: Bit Scan Reverse. @@ -1098,14 +1844,21 @@ func BSRL(mr, r operand.Op) (*avo.Instruction, error) { func BSRQ(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR64(mr) && operand.IsR64(r): + return &avo.Instruction{ + Opcode: "BSRQ", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM64(mr) && operand.IsR64(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "BSRQ", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "BSRQ", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // BSRW: Bit Scan Reverse. @@ -1117,14 +1870,21 @@ func BSRQ(mr, r operand.Op) (*avo.Instruction, error) { func BSRW(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR16(mr) && operand.IsR16(r): + return &avo.Instruction{ + Opcode: "BSRW", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM16(mr) && operand.IsR16(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "BSRW", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "BSRW", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // BSWAPL: Byte Swap. @@ -1135,13 +1895,14 @@ func BSRW(mr, r operand.Op) (*avo.Instruction, error) { func BSWAPL(r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "BSWAPL", + Operands: []operand.Op{r}, + Inputs: []operand.Op{r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "BSWAPL", - Operands: []operand.Op{r}, - }, nil + return nil, ErrBadOperandTypes } // BSWAPQ: Byte Swap. @@ -1152,13 +1913,14 @@ func BSWAPL(r operand.Op) (*avo.Instruction, error) { func BSWAPQ(r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR64(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "BSWAPQ", + Operands: []operand.Op{r}, + Inputs: []operand.Op{r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "BSWAPQ", - Operands: []operand.Op{r}, - }, nil + return nil, ErrBadOperandTypes } // BTCL: Bit Test and Complement. @@ -1172,16 +1934,35 @@ func BSWAPQ(r operand.Op) (*avo.Instruction, error) { func BTCL(ir, mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(ir) && operand.IsR32(mr): + return &avo.Instruction{ + Opcode: "BTCL", + Operands: []operand.Op{ir, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsR32(ir) && operand.IsR32(mr): + return &avo.Instruction{ + Opcode: "BTCL", + Operands: []operand.Op{ir, mr}, + Inputs: []operand.Op{ir, mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ir) && operand.IsM32(mr): + return &avo.Instruction{ + Opcode: "BTCL", + Operands: []operand.Op{ir, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsR32(ir) && operand.IsM32(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "BTCL", + Operands: []operand.Op{ir, mr}, + Inputs: []operand.Op{ir, mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "BTCL", - Operands: []operand.Op{ir, mr}, - }, nil + return nil, ErrBadOperandTypes } // BTCQ: Bit Test and Complement. @@ -1195,16 +1976,35 @@ func BTCL(ir, mr operand.Op) (*avo.Instruction, error) { func BTCQ(ir, mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(ir) && operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "BTCQ", + Operands: []operand.Op{ir, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsR64(ir) && operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "BTCQ", + Operands: []operand.Op{ir, mr}, + Inputs: []operand.Op{ir, mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ir) && operand.IsM64(mr): + return &avo.Instruction{ + Opcode: "BTCQ", + Operands: []operand.Op{ir, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsR64(ir) && operand.IsM64(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "BTCQ", + Operands: []operand.Op{ir, mr}, + Inputs: []operand.Op{ir, mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "BTCQ", - Operands: []operand.Op{ir, mr}, - }, nil + return nil, ErrBadOperandTypes } // BTCW: Bit Test and Complement. @@ -1218,16 +2018,35 @@ func BTCQ(ir, mr operand.Op) (*avo.Instruction, error) { func BTCW(ir, mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(ir) && operand.IsR16(mr): + return &avo.Instruction{ + Opcode: "BTCW", + Operands: []operand.Op{ir, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsR16(ir) && operand.IsR16(mr): + return &avo.Instruction{ + Opcode: "BTCW", + Operands: []operand.Op{ir, mr}, + Inputs: []operand.Op{ir, mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ir) && operand.IsM16(mr): + return &avo.Instruction{ + Opcode: "BTCW", + Operands: []operand.Op{ir, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsR16(ir) && operand.IsM16(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "BTCW", + Operands: []operand.Op{ir, mr}, + Inputs: []operand.Op{ir, mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "BTCW", - Operands: []operand.Op{ir, mr}, - }, nil + return nil, ErrBadOperandTypes } // BTL: Bit Test. @@ -1241,16 +2060,35 @@ func BTCW(ir, mr operand.Op) (*avo.Instruction, error) { func BTL(ir, mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(ir) && operand.IsR32(mr): + return &avo.Instruction{ + Opcode: "BTL", + Operands: []operand.Op{ir, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{}, + }, nil case operand.IsR32(ir) && operand.IsR32(mr): + return &avo.Instruction{ + Opcode: "BTL", + Operands: []operand.Op{ir, mr}, + Inputs: []operand.Op{ir, mr}, + Outputs: []operand.Op{}, + }, nil case operand.IsImm8(ir) && operand.IsM32(mr): + return &avo.Instruction{ + Opcode: "BTL", + Operands: []operand.Op{ir, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{}, + }, nil case operand.IsR32(ir) && operand.IsM32(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "BTL", + Operands: []operand.Op{ir, mr}, + Inputs: []operand.Op{ir, mr}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "BTL", - Operands: []operand.Op{ir, mr}, - }, nil + return nil, ErrBadOperandTypes } // BTQ: Bit Test. @@ -1264,16 +2102,35 @@ func BTL(ir, mr operand.Op) (*avo.Instruction, error) { func BTQ(ir, mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(ir) && operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "BTQ", + Operands: []operand.Op{ir, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{}, + }, nil case operand.IsR64(ir) && operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "BTQ", + Operands: []operand.Op{ir, mr}, + Inputs: []operand.Op{ir, mr}, + Outputs: []operand.Op{}, + }, nil case operand.IsImm8(ir) && operand.IsM64(mr): + return &avo.Instruction{ + Opcode: "BTQ", + Operands: []operand.Op{ir, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{}, + }, nil case operand.IsR64(ir) && operand.IsM64(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "BTQ", + Operands: []operand.Op{ir, mr}, + Inputs: []operand.Op{ir, mr}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "BTQ", - Operands: []operand.Op{ir, mr}, - }, nil + return nil, ErrBadOperandTypes } // BTRL: Bit Test and Reset. @@ -1287,16 +2144,35 @@ func BTQ(ir, mr operand.Op) (*avo.Instruction, error) { func BTRL(ir, mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(ir) && operand.IsR32(mr): + return &avo.Instruction{ + Opcode: "BTRL", + Operands: []operand.Op{ir, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsR32(ir) && operand.IsR32(mr): + return &avo.Instruction{ + Opcode: "BTRL", + Operands: []operand.Op{ir, mr}, + Inputs: []operand.Op{ir, mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ir) && operand.IsM32(mr): + return &avo.Instruction{ + Opcode: "BTRL", + Operands: []operand.Op{ir, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsR32(ir) && operand.IsM32(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "BTRL", + Operands: []operand.Op{ir, mr}, + Inputs: []operand.Op{ir, mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "BTRL", - Operands: []operand.Op{ir, mr}, - }, nil + return nil, ErrBadOperandTypes } // BTRQ: Bit Test and Reset. @@ -1310,16 +2186,35 @@ func BTRL(ir, mr operand.Op) (*avo.Instruction, error) { func BTRQ(ir, mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(ir) && operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "BTRQ", + Operands: []operand.Op{ir, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsR64(ir) && operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "BTRQ", + Operands: []operand.Op{ir, mr}, + Inputs: []operand.Op{ir, mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ir) && operand.IsM64(mr): + return &avo.Instruction{ + Opcode: "BTRQ", + Operands: []operand.Op{ir, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsR64(ir) && operand.IsM64(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "BTRQ", + Operands: []operand.Op{ir, mr}, + Inputs: []operand.Op{ir, mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "BTRQ", - Operands: []operand.Op{ir, mr}, - }, nil + return nil, ErrBadOperandTypes } // BTRW: Bit Test and Reset. @@ -1333,16 +2228,35 @@ func BTRQ(ir, mr operand.Op) (*avo.Instruction, error) { func BTRW(ir, mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(ir) && operand.IsR16(mr): + return &avo.Instruction{ + Opcode: "BTRW", + Operands: []operand.Op{ir, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsR16(ir) && operand.IsR16(mr): + return &avo.Instruction{ + Opcode: "BTRW", + Operands: []operand.Op{ir, mr}, + Inputs: []operand.Op{ir, mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ir) && operand.IsM16(mr): + return &avo.Instruction{ + Opcode: "BTRW", + Operands: []operand.Op{ir, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsR16(ir) && operand.IsM16(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "BTRW", + Operands: []operand.Op{ir, mr}, + Inputs: []operand.Op{ir, mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "BTRW", - Operands: []operand.Op{ir, mr}, - }, nil + return nil, ErrBadOperandTypes } // BTSL: Bit Test and Set. @@ -1356,16 +2270,35 @@ func BTRW(ir, mr operand.Op) (*avo.Instruction, error) { func BTSL(ir, mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(ir) && operand.IsR32(mr): + return &avo.Instruction{ + Opcode: "BTSL", + Operands: []operand.Op{ir, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsR32(ir) && operand.IsR32(mr): + return &avo.Instruction{ + Opcode: "BTSL", + Operands: []operand.Op{ir, mr}, + Inputs: []operand.Op{ir, mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ir) && operand.IsM32(mr): + return &avo.Instruction{ + Opcode: "BTSL", + Operands: []operand.Op{ir, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsR32(ir) && operand.IsM32(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "BTSL", + Operands: []operand.Op{ir, mr}, + Inputs: []operand.Op{ir, mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "BTSL", - Operands: []operand.Op{ir, mr}, - }, nil + return nil, ErrBadOperandTypes } // BTSQ: Bit Test and Set. @@ -1379,16 +2312,35 @@ func BTSL(ir, mr operand.Op) (*avo.Instruction, error) { func BTSQ(ir, mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(ir) && operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "BTSQ", + Operands: []operand.Op{ir, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsR64(ir) && operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "BTSQ", + Operands: []operand.Op{ir, mr}, + Inputs: []operand.Op{ir, mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ir) && operand.IsM64(mr): + return &avo.Instruction{ + Opcode: "BTSQ", + Operands: []operand.Op{ir, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsR64(ir) && operand.IsM64(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "BTSQ", + Operands: []operand.Op{ir, mr}, + Inputs: []operand.Op{ir, mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "BTSQ", - Operands: []operand.Op{ir, mr}, - }, nil + return nil, ErrBadOperandTypes } // BTSW: Bit Test and Set. @@ -1402,16 +2354,35 @@ func BTSQ(ir, mr operand.Op) (*avo.Instruction, error) { func BTSW(ir, mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(ir) && operand.IsR16(mr): + return &avo.Instruction{ + Opcode: "BTSW", + Operands: []operand.Op{ir, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsR16(ir) && operand.IsR16(mr): + return &avo.Instruction{ + Opcode: "BTSW", + Operands: []operand.Op{ir, mr}, + Inputs: []operand.Op{ir, mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ir) && operand.IsM16(mr): + return &avo.Instruction{ + Opcode: "BTSW", + Operands: []operand.Op{ir, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsR16(ir) && operand.IsM16(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "BTSW", + Operands: []operand.Op{ir, mr}, + Inputs: []operand.Op{ir, mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "BTSW", - Operands: []operand.Op{ir, mr}, - }, nil + return nil, ErrBadOperandTypes } // BTW: Bit Test. @@ -1425,16 +2396,35 @@ func BTSW(ir, mr operand.Op) (*avo.Instruction, error) { func BTW(ir, mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(ir) && operand.IsR16(mr): + return &avo.Instruction{ + Opcode: "BTW", + Operands: []operand.Op{ir, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{}, + }, nil case operand.IsR16(ir) && operand.IsR16(mr): + return &avo.Instruction{ + Opcode: "BTW", + Operands: []operand.Op{ir, mr}, + Inputs: []operand.Op{ir, mr}, + Outputs: []operand.Op{}, + }, nil case operand.IsImm8(ir) && operand.IsM16(mr): + return &avo.Instruction{ + Opcode: "BTW", + Operands: []operand.Op{ir, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{}, + }, nil case operand.IsR16(ir) && operand.IsM16(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "BTW", + Operands: []operand.Op{ir, mr}, + Inputs: []operand.Op{ir, mr}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "BTW", - Operands: []operand.Op{ir, mr}, - }, nil + return nil, ErrBadOperandTypes } // BZHIL: Zero High Bits Starting with Specified Bit Position. @@ -1446,14 +2436,21 @@ func BTW(ir, mr operand.Op) (*avo.Instruction, error) { func BZHIL(r, mr, r1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsR32(r) && operand.IsR32(mr) && operand.IsR32(r1): + return &avo.Instruction{ + Opcode: "BZHIL", + Operands: []operand.Op{r, mr, r1}, + Inputs: []operand.Op{r, mr}, + Outputs: []operand.Op{r1}, + }, nil case operand.IsR32(r) && operand.IsM32(mr) && operand.IsR32(r1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "BZHIL", + Operands: []operand.Op{r, mr, r1}, + Inputs: []operand.Op{r, mr}, + Outputs: []operand.Op{r1}, + }, nil } - return &avo.Instruction{ - Opcode: "BZHIL", - Operands: []operand.Op{r, mr, r1}, - }, nil + return nil, ErrBadOperandTypes } // BZHIQ: Zero High Bits Starting with Specified Bit Position. @@ -1465,14 +2462,21 @@ func BZHIL(r, mr, r1 operand.Op) (*avo.Instruction, error) { func BZHIQ(r, mr, r1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsR64(r) && operand.IsR64(mr) && operand.IsR64(r1): + return &avo.Instruction{ + Opcode: "BZHIQ", + Operands: []operand.Op{r, mr, r1}, + Inputs: []operand.Op{r, mr}, + Outputs: []operand.Op{r1}, + }, nil case operand.IsR64(r) && operand.IsM64(mr) && operand.IsR64(r1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "BZHIQ", + Operands: []operand.Op{r, mr, r1}, + Inputs: []operand.Op{r, mr}, + Outputs: []operand.Op{r1}, + }, nil } - return &avo.Instruction{ - Opcode: "BZHIQ", - Operands: []operand.Op{r, mr, r1}, - }, nil + return nil, ErrBadOperandTypes } // CALL: Call Procedure. @@ -1483,13 +2487,14 @@ func BZHIQ(r, mr, r1 operand.Op) (*avo.Instruction, error) { func CALL(r operand.Op) (*avo.Instruction, error) { switch { case operand.IsRel32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CALL", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "CALL", - Operands: []operand.Op{r}, - }, nil + return nil, ErrBadOperandTypes } // CBW: Convert Byte to Word. @@ -1501,6 +2506,8 @@ func CBW() (*avo.Instruction, error) { return &avo.Instruction{ Opcode: "CBW", Operands: nil, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, }, nil } @@ -1513,6 +2520,8 @@ func CDQ() (*avo.Instruction, error) { return &avo.Instruction{ Opcode: "CDQ", Operands: nil, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, }, nil } @@ -1525,6 +2534,8 @@ func CDQE() (*avo.Instruction, error) { return &avo.Instruction{ Opcode: "CDQE", Operands: nil, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, }, nil } @@ -1537,6 +2548,8 @@ func CLC() (*avo.Instruction, error) { return &avo.Instruction{ Opcode: "CLC", Operands: nil, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, }, nil } @@ -1549,6 +2562,8 @@ func CLD() (*avo.Instruction, error) { return &avo.Instruction{ Opcode: "CLD", Operands: nil, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, }, nil } @@ -1560,13 +2575,14 @@ func CLD() (*avo.Instruction, error) { func CLFLUSH(m operand.Op) (*avo.Instruction, error) { switch { case operand.IsM8(m): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CLFLUSH", + Operands: []operand.Op{m}, + Inputs: []operand.Op{m}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "CLFLUSH", - Operands: []operand.Op{m}, - }, nil + return nil, ErrBadOperandTypes } // CLFLUSHOPT: Flush Cache Line Optimized. @@ -1577,13 +2593,14 @@ func CLFLUSH(m operand.Op) (*avo.Instruction, error) { func CLFLUSHOPT(m operand.Op) (*avo.Instruction, error) { switch { case operand.IsM8(m): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CLFLUSHOPT", + Operands: []operand.Op{m}, + Inputs: []operand.Op{m}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "CLFLUSHOPT", - Operands: []operand.Op{m}, - }, nil + return nil, ErrBadOperandTypes } // CMC: Complement Carry Flag. @@ -1595,6 +2612,8 @@ func CMC() (*avo.Instruction, error) { return &avo.Instruction{ Opcode: "CMC", Operands: nil, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, }, nil } @@ -1607,14 +2626,21 @@ func CMC() (*avo.Instruction, error) { func CMOVLCC(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR32(mr) && operand.IsR32(r): + return &avo.Instruction{ + Opcode: "CMOVLCC", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM32(mr) && operand.IsR32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMOVLCC", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "CMOVLCC", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // CMOVLCS: Move if below (CF == 1). @@ -1626,14 +2652,21 @@ func CMOVLCC(mr, r operand.Op) (*avo.Instruction, error) { func CMOVLCS(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR32(mr) && operand.IsR32(r): + return &avo.Instruction{ + Opcode: "CMOVLCS", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM32(mr) && operand.IsR32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMOVLCS", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "CMOVLCS", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // CMOVLEQ: Move if equal (ZF == 1). @@ -1645,14 +2678,21 @@ func CMOVLCS(mr, r operand.Op) (*avo.Instruction, error) { func CMOVLEQ(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR32(mr) && operand.IsR32(r): + return &avo.Instruction{ + Opcode: "CMOVLEQ", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM32(mr) && operand.IsR32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMOVLEQ", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "CMOVLEQ", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // CMOVLGE: Move if greater or equal (SF == OF). @@ -1664,14 +2704,21 @@ func CMOVLEQ(mr, r operand.Op) (*avo.Instruction, error) { func CMOVLGE(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR32(mr) && operand.IsR32(r): + return &avo.Instruction{ + Opcode: "CMOVLGE", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM32(mr) && operand.IsR32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMOVLGE", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "CMOVLGE", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // CMOVLGT: Move if greater (ZF == 0 and SF == OF). @@ -1683,14 +2730,21 @@ func CMOVLGE(mr, r operand.Op) (*avo.Instruction, error) { func CMOVLGT(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR32(mr) && operand.IsR32(r): + return &avo.Instruction{ + Opcode: "CMOVLGT", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM32(mr) && operand.IsR32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMOVLGT", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "CMOVLGT", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // CMOVLHI: Move if above (CF == 0 and ZF == 0). @@ -1702,14 +2756,21 @@ func CMOVLGT(mr, r operand.Op) (*avo.Instruction, error) { func CMOVLHI(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR32(mr) && operand.IsR32(r): + return &avo.Instruction{ + Opcode: "CMOVLHI", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM32(mr) && operand.IsR32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMOVLHI", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "CMOVLHI", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // CMOVLLE: Move if less or equal (ZF == 1 or SF != OF). @@ -1721,14 +2782,21 @@ func CMOVLHI(mr, r operand.Op) (*avo.Instruction, error) { func CMOVLLE(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR32(mr) && operand.IsR32(r): + return &avo.Instruction{ + Opcode: "CMOVLLE", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM32(mr) && operand.IsR32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMOVLLE", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "CMOVLLE", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // CMOVLLS: Move if below or equal (CF == 1 or ZF == 1). @@ -1740,14 +2808,21 @@ func CMOVLLE(mr, r operand.Op) (*avo.Instruction, error) { func CMOVLLS(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR32(mr) && operand.IsR32(r): + return &avo.Instruction{ + Opcode: "CMOVLLS", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM32(mr) && operand.IsR32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMOVLLS", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "CMOVLLS", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // CMOVLLT: Move if less (SF != OF). @@ -1759,14 +2834,21 @@ func CMOVLLS(mr, r operand.Op) (*avo.Instruction, error) { func CMOVLLT(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR32(mr) && operand.IsR32(r): + return &avo.Instruction{ + Opcode: "CMOVLLT", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM32(mr) && operand.IsR32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMOVLLT", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "CMOVLLT", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // CMOVLMI: Move if sign (SF == 1). @@ -1778,14 +2860,21 @@ func CMOVLLT(mr, r operand.Op) (*avo.Instruction, error) { func CMOVLMI(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR32(mr) && operand.IsR32(r): + return &avo.Instruction{ + Opcode: "CMOVLMI", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM32(mr) && operand.IsR32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMOVLMI", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "CMOVLMI", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // CMOVLNE: Move if not equal (ZF == 0). @@ -1797,14 +2886,21 @@ func CMOVLMI(mr, r operand.Op) (*avo.Instruction, error) { func CMOVLNE(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR32(mr) && operand.IsR32(r): + return &avo.Instruction{ + Opcode: "CMOVLNE", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM32(mr) && operand.IsR32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMOVLNE", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "CMOVLNE", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // CMOVLOC: Move if not overflow (OF == 0). @@ -1816,14 +2912,21 @@ func CMOVLNE(mr, r operand.Op) (*avo.Instruction, error) { func CMOVLOC(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR32(mr) && operand.IsR32(r): + return &avo.Instruction{ + Opcode: "CMOVLOC", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM32(mr) && operand.IsR32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMOVLOC", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "CMOVLOC", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // CMOVLOS: Move if overflow (OF == 1). @@ -1835,14 +2938,21 @@ func CMOVLOC(mr, r operand.Op) (*avo.Instruction, error) { func CMOVLOS(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR32(mr) && operand.IsR32(r): + return &avo.Instruction{ + Opcode: "CMOVLOS", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM32(mr) && operand.IsR32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMOVLOS", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "CMOVLOS", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // CMOVLPC: Move if not parity (PF == 0). @@ -1854,14 +2964,21 @@ func CMOVLOS(mr, r operand.Op) (*avo.Instruction, error) { func CMOVLPC(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR32(mr) && operand.IsR32(r): + return &avo.Instruction{ + Opcode: "CMOVLPC", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM32(mr) && operand.IsR32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMOVLPC", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "CMOVLPC", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // CMOVLPL: Move if not sign (SF == 0). @@ -1873,14 +2990,21 @@ func CMOVLPC(mr, r operand.Op) (*avo.Instruction, error) { func CMOVLPL(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR32(mr) && operand.IsR32(r): + return &avo.Instruction{ + Opcode: "CMOVLPL", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM32(mr) && operand.IsR32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMOVLPL", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "CMOVLPL", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // CMOVLPS: Move if parity (PF == 1). @@ -1892,14 +3016,21 @@ func CMOVLPL(mr, r operand.Op) (*avo.Instruction, error) { func CMOVLPS(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR32(mr) && operand.IsR32(r): + return &avo.Instruction{ + Opcode: "CMOVLPS", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM32(mr) && operand.IsR32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMOVLPS", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "CMOVLPS", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // CMOVQCC: Move if above or equal (CF == 0). @@ -1911,14 +3042,21 @@ func CMOVLPS(mr, r operand.Op) (*avo.Instruction, error) { func CMOVQCC(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR64(mr) && operand.IsR64(r): + return &avo.Instruction{ + Opcode: "CMOVQCC", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM64(mr) && operand.IsR64(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMOVQCC", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "CMOVQCC", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // CMOVQCS: Move if below (CF == 1). @@ -1930,14 +3068,21 @@ func CMOVQCC(mr, r operand.Op) (*avo.Instruction, error) { func CMOVQCS(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR64(mr) && operand.IsR64(r): + return &avo.Instruction{ + Opcode: "CMOVQCS", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM64(mr) && operand.IsR64(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMOVQCS", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "CMOVQCS", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // CMOVQEQ: Move if equal (ZF == 1). @@ -1949,14 +3094,21 @@ func CMOVQCS(mr, r operand.Op) (*avo.Instruction, error) { func CMOVQEQ(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR64(mr) && operand.IsR64(r): + return &avo.Instruction{ + Opcode: "CMOVQEQ", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM64(mr) && operand.IsR64(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMOVQEQ", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "CMOVQEQ", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // CMOVQGE: Move if greater or equal (SF == OF). @@ -1968,14 +3120,21 @@ func CMOVQEQ(mr, r operand.Op) (*avo.Instruction, error) { func CMOVQGE(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR64(mr) && operand.IsR64(r): + return &avo.Instruction{ + Opcode: "CMOVQGE", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM64(mr) && operand.IsR64(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMOVQGE", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "CMOVQGE", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // CMOVQGT: Move if greater (ZF == 0 and SF == OF). @@ -1987,14 +3146,21 @@ func CMOVQGE(mr, r operand.Op) (*avo.Instruction, error) { func CMOVQGT(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR64(mr) && operand.IsR64(r): + return &avo.Instruction{ + Opcode: "CMOVQGT", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM64(mr) && operand.IsR64(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMOVQGT", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "CMOVQGT", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // CMOVQHI: Move if above (CF == 0 and ZF == 0). @@ -2006,14 +3172,21 @@ func CMOVQGT(mr, r operand.Op) (*avo.Instruction, error) { func CMOVQHI(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR64(mr) && operand.IsR64(r): + return &avo.Instruction{ + Opcode: "CMOVQHI", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM64(mr) && operand.IsR64(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMOVQHI", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "CMOVQHI", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // CMOVQLE: Move if less or equal (ZF == 1 or SF != OF). @@ -2025,14 +3198,21 @@ func CMOVQHI(mr, r operand.Op) (*avo.Instruction, error) { func CMOVQLE(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR64(mr) && operand.IsR64(r): + return &avo.Instruction{ + Opcode: "CMOVQLE", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM64(mr) && operand.IsR64(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMOVQLE", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "CMOVQLE", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // CMOVQLS: Move if below or equal (CF == 1 or ZF == 1). @@ -2044,14 +3224,21 @@ func CMOVQLE(mr, r operand.Op) (*avo.Instruction, error) { func CMOVQLS(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR64(mr) && operand.IsR64(r): + return &avo.Instruction{ + Opcode: "CMOVQLS", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM64(mr) && operand.IsR64(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMOVQLS", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "CMOVQLS", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // CMOVQLT: Move if less (SF != OF). @@ -2063,14 +3250,21 @@ func CMOVQLS(mr, r operand.Op) (*avo.Instruction, error) { func CMOVQLT(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR64(mr) && operand.IsR64(r): + return &avo.Instruction{ + Opcode: "CMOVQLT", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM64(mr) && operand.IsR64(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMOVQLT", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "CMOVQLT", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // CMOVQMI: Move if sign (SF == 1). @@ -2082,14 +3276,21 @@ func CMOVQLT(mr, r operand.Op) (*avo.Instruction, error) { func CMOVQMI(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR64(mr) && operand.IsR64(r): + return &avo.Instruction{ + Opcode: "CMOVQMI", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM64(mr) && operand.IsR64(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMOVQMI", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "CMOVQMI", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // CMOVQNE: Move if not equal (ZF == 0). @@ -2101,14 +3302,21 @@ func CMOVQMI(mr, r operand.Op) (*avo.Instruction, error) { func CMOVQNE(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR64(mr) && operand.IsR64(r): + return &avo.Instruction{ + Opcode: "CMOVQNE", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM64(mr) && operand.IsR64(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMOVQNE", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "CMOVQNE", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // CMOVQOC: Move if not overflow (OF == 0). @@ -2120,14 +3328,21 @@ func CMOVQNE(mr, r operand.Op) (*avo.Instruction, error) { func CMOVQOC(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR64(mr) && operand.IsR64(r): + return &avo.Instruction{ + Opcode: "CMOVQOC", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM64(mr) && operand.IsR64(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMOVQOC", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "CMOVQOC", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // CMOVQOS: Move if overflow (OF == 1). @@ -2139,14 +3354,21 @@ func CMOVQOC(mr, r operand.Op) (*avo.Instruction, error) { func CMOVQOS(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR64(mr) && operand.IsR64(r): + return &avo.Instruction{ + Opcode: "CMOVQOS", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM64(mr) && operand.IsR64(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMOVQOS", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "CMOVQOS", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // CMOVQPC: Move if not parity (PF == 0). @@ -2158,14 +3380,21 @@ func CMOVQOS(mr, r operand.Op) (*avo.Instruction, error) { func CMOVQPC(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR64(mr) && operand.IsR64(r): + return &avo.Instruction{ + Opcode: "CMOVQPC", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM64(mr) && operand.IsR64(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMOVQPC", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "CMOVQPC", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // CMOVQPL: Move if not sign (SF == 0). @@ -2177,14 +3406,21 @@ func CMOVQPC(mr, r operand.Op) (*avo.Instruction, error) { func CMOVQPL(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR64(mr) && operand.IsR64(r): + return &avo.Instruction{ + Opcode: "CMOVQPL", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM64(mr) && operand.IsR64(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMOVQPL", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "CMOVQPL", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // CMOVQPS: Move if parity (PF == 1). @@ -2196,14 +3432,21 @@ func CMOVQPL(mr, r operand.Op) (*avo.Instruction, error) { func CMOVQPS(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR64(mr) && operand.IsR64(r): + return &avo.Instruction{ + Opcode: "CMOVQPS", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM64(mr) && operand.IsR64(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMOVQPS", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "CMOVQPS", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // CMOVWCC: Move if above or equal (CF == 0). @@ -2215,14 +3458,21 @@ func CMOVQPS(mr, r operand.Op) (*avo.Instruction, error) { func CMOVWCC(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR16(mr) && operand.IsR16(r): + return &avo.Instruction{ + Opcode: "CMOVWCC", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM16(mr) && operand.IsR16(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMOVWCC", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "CMOVWCC", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // CMOVWCS: Move if below (CF == 1). @@ -2234,14 +3484,21 @@ func CMOVWCC(mr, r operand.Op) (*avo.Instruction, error) { func CMOVWCS(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR16(mr) && operand.IsR16(r): + return &avo.Instruction{ + Opcode: "CMOVWCS", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM16(mr) && operand.IsR16(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMOVWCS", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "CMOVWCS", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // CMOVWEQ: Move if equal (ZF == 1). @@ -2253,14 +3510,21 @@ func CMOVWCS(mr, r operand.Op) (*avo.Instruction, error) { func CMOVWEQ(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR16(mr) && operand.IsR16(r): + return &avo.Instruction{ + Opcode: "CMOVWEQ", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM16(mr) && operand.IsR16(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMOVWEQ", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "CMOVWEQ", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // CMOVWGE: Move if greater or equal (SF == OF). @@ -2272,14 +3536,21 @@ func CMOVWEQ(mr, r operand.Op) (*avo.Instruction, error) { func CMOVWGE(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR16(mr) && operand.IsR16(r): + return &avo.Instruction{ + Opcode: "CMOVWGE", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM16(mr) && operand.IsR16(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMOVWGE", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "CMOVWGE", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // CMOVWGT: Move if greater (ZF == 0 and SF == OF). @@ -2291,14 +3562,21 @@ func CMOVWGE(mr, r operand.Op) (*avo.Instruction, error) { func CMOVWGT(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR16(mr) && operand.IsR16(r): + return &avo.Instruction{ + Opcode: "CMOVWGT", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM16(mr) && operand.IsR16(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMOVWGT", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "CMOVWGT", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // CMOVWHI: Move if above (CF == 0 and ZF == 0). @@ -2310,14 +3588,21 @@ func CMOVWGT(mr, r operand.Op) (*avo.Instruction, error) { func CMOVWHI(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR16(mr) && operand.IsR16(r): + return &avo.Instruction{ + Opcode: "CMOVWHI", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM16(mr) && operand.IsR16(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMOVWHI", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "CMOVWHI", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // CMOVWLE: Move if less or equal (ZF == 1 or SF != OF). @@ -2329,14 +3614,21 @@ func CMOVWHI(mr, r operand.Op) (*avo.Instruction, error) { func CMOVWLE(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR16(mr) && operand.IsR16(r): + return &avo.Instruction{ + Opcode: "CMOVWLE", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM16(mr) && operand.IsR16(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMOVWLE", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "CMOVWLE", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // CMOVWLS: Move if below or equal (CF == 1 or ZF == 1). @@ -2348,14 +3640,21 @@ func CMOVWLE(mr, r operand.Op) (*avo.Instruction, error) { func CMOVWLS(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR16(mr) && operand.IsR16(r): + return &avo.Instruction{ + Opcode: "CMOVWLS", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM16(mr) && operand.IsR16(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMOVWLS", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "CMOVWLS", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // CMOVWLT: Move if less (SF != OF). @@ -2367,14 +3666,21 @@ func CMOVWLS(mr, r operand.Op) (*avo.Instruction, error) { func CMOVWLT(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR16(mr) && operand.IsR16(r): + return &avo.Instruction{ + Opcode: "CMOVWLT", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM16(mr) && operand.IsR16(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMOVWLT", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "CMOVWLT", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // CMOVWMI: Move if sign (SF == 1). @@ -2386,14 +3692,21 @@ func CMOVWLT(mr, r operand.Op) (*avo.Instruction, error) { func CMOVWMI(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR16(mr) && operand.IsR16(r): + return &avo.Instruction{ + Opcode: "CMOVWMI", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM16(mr) && operand.IsR16(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMOVWMI", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "CMOVWMI", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // CMOVWNE: Move if not equal (ZF == 0). @@ -2405,14 +3718,21 @@ func CMOVWMI(mr, r operand.Op) (*avo.Instruction, error) { func CMOVWNE(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR16(mr) && operand.IsR16(r): + return &avo.Instruction{ + Opcode: "CMOVWNE", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM16(mr) && operand.IsR16(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMOVWNE", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "CMOVWNE", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // CMOVWOC: Move if not overflow (OF == 0). @@ -2424,14 +3744,21 @@ func CMOVWNE(mr, r operand.Op) (*avo.Instruction, error) { func CMOVWOC(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR16(mr) && operand.IsR16(r): + return &avo.Instruction{ + Opcode: "CMOVWOC", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM16(mr) && operand.IsR16(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMOVWOC", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "CMOVWOC", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // CMOVWOS: Move if overflow (OF == 1). @@ -2443,14 +3770,21 @@ func CMOVWOC(mr, r operand.Op) (*avo.Instruction, error) { func CMOVWOS(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR16(mr) && operand.IsR16(r): + return &avo.Instruction{ + Opcode: "CMOVWOS", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM16(mr) && operand.IsR16(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMOVWOS", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "CMOVWOS", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // CMOVWPC: Move if not parity (PF == 0). @@ -2462,14 +3796,21 @@ func CMOVWOS(mr, r operand.Op) (*avo.Instruction, error) { func CMOVWPC(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR16(mr) && operand.IsR16(r): + return &avo.Instruction{ + Opcode: "CMOVWPC", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM16(mr) && operand.IsR16(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMOVWPC", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "CMOVWPC", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // CMOVWPL: Move if not sign (SF == 0). @@ -2481,14 +3822,21 @@ func CMOVWPC(mr, r operand.Op) (*avo.Instruction, error) { func CMOVWPL(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR16(mr) && operand.IsR16(r): + return &avo.Instruction{ + Opcode: "CMOVWPL", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM16(mr) && operand.IsR16(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMOVWPL", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "CMOVWPL", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // CMOVWPS: Move if parity (PF == 1). @@ -2500,14 +3848,21 @@ func CMOVWPL(mr, r operand.Op) (*avo.Instruction, error) { func CMOVWPS(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR16(mr) && operand.IsR16(r): + return &avo.Instruction{ + Opcode: "CMOVWPS", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM16(mr) && operand.IsR16(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMOVWPS", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "CMOVWPS", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // CMPB: Compare Two Operands. @@ -2523,18 +3878,49 @@ func CMOVWPS(mr, r operand.Op) (*avo.Instruction, error) { func CMPB(amr, imr operand.Op) (*avo.Instruction, error) { switch { case operand.IsAl(amr) && operand.IsImm8(imr): + return &avo.Instruction{ + Opcode: "CMPB", + Operands: []operand.Op{amr, imr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{}, + }, nil case operand.IsR8(amr) && operand.IsImm8(imr): + return &avo.Instruction{ + Opcode: "CMPB", + Operands: []operand.Op{amr, imr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{}, + }, nil case operand.IsR8(amr) && operand.IsR8(imr): + return &avo.Instruction{ + Opcode: "CMPB", + Operands: []operand.Op{amr, imr}, + Inputs: []operand.Op{amr, imr}, + Outputs: []operand.Op{}, + }, nil case operand.IsR8(amr) && operand.IsM8(imr): + return &avo.Instruction{ + Opcode: "CMPB", + Operands: []operand.Op{amr, imr}, + Inputs: []operand.Op{amr, imr}, + Outputs: []operand.Op{}, + }, nil case operand.IsM8(amr) && operand.IsImm8(imr): + return &avo.Instruction{ + Opcode: "CMPB", + Operands: []operand.Op{amr, imr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{}, + }, nil case operand.IsM8(amr) && operand.IsR8(imr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMPB", + Operands: []operand.Op{amr, imr}, + Inputs: []operand.Op{amr, imr}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "CMPB", - Operands: []operand.Op{amr, imr}, - }, nil + return nil, ErrBadOperandTypes } // CMPL: Compare Two Operands. @@ -2552,20 +3938,63 @@ func CMPB(amr, imr operand.Op) (*avo.Instruction, error) { func CMPL(emr, imr operand.Op) (*avo.Instruction, error) { switch { case operand.IsEax(emr) && operand.IsImm32(imr): + return &avo.Instruction{ + Opcode: "CMPL", + Operands: []operand.Op{emr, imr}, + Inputs: []operand.Op{emr}, + Outputs: []operand.Op{}, + }, nil case operand.IsR32(emr) && operand.IsImm8(imr): + return &avo.Instruction{ + Opcode: "CMPL", + Operands: []operand.Op{emr, imr}, + Inputs: []operand.Op{emr}, + Outputs: []operand.Op{}, + }, nil case operand.IsR32(emr) && operand.IsImm32(imr): + return &avo.Instruction{ + Opcode: "CMPL", + Operands: []operand.Op{emr, imr}, + Inputs: []operand.Op{emr}, + Outputs: []operand.Op{}, + }, nil case operand.IsR32(emr) && operand.IsR32(imr): + return &avo.Instruction{ + Opcode: "CMPL", + Operands: []operand.Op{emr, imr}, + Inputs: []operand.Op{emr, imr}, + Outputs: []operand.Op{}, + }, nil case operand.IsR32(emr) && operand.IsM32(imr): + return &avo.Instruction{ + Opcode: "CMPL", + Operands: []operand.Op{emr, imr}, + Inputs: []operand.Op{emr, imr}, + Outputs: []operand.Op{}, + }, nil case operand.IsM32(emr) && operand.IsImm8(imr): + return &avo.Instruction{ + Opcode: "CMPL", + Operands: []operand.Op{emr, imr}, + Inputs: []operand.Op{emr}, + Outputs: []operand.Op{}, + }, nil case operand.IsM32(emr) && operand.IsImm32(imr): + return &avo.Instruction{ + Opcode: "CMPL", + Operands: []operand.Op{emr, imr}, + Inputs: []operand.Op{emr}, + Outputs: []operand.Op{}, + }, nil case operand.IsM32(emr) && operand.IsR32(imr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMPL", + Operands: []operand.Op{emr, imr}, + Inputs: []operand.Op{emr, imr}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "CMPL", - Operands: []operand.Op{emr, imr}, - }, nil + return nil, ErrBadOperandTypes } // CMPPD: Compare Packed Double-Precision Floating-Point Values. @@ -2577,14 +4006,21 @@ func CMPL(emr, imr operand.Op) (*avo.Instruction, error) { func CMPPD(mx, x, i operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x) && operand.IsImm8(i): + return &avo.Instruction{ + Opcode: "CMPPD", + Operands: []operand.Op{mx, x, i}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x) && operand.IsImm8(i): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMPPD", + Operands: []operand.Op{mx, x, i}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "CMPPD", - Operands: []operand.Op{mx, x, i}, - }, nil + return nil, ErrBadOperandTypes } // CMPPS: Compare Packed Single-Precision Floating-Point Values. @@ -2596,14 +4032,21 @@ func CMPPD(mx, x, i operand.Op) (*avo.Instruction, error) { func CMPPS(mx, x, i operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x) && operand.IsImm8(i): + return &avo.Instruction{ + Opcode: "CMPPS", + Operands: []operand.Op{mx, x, i}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x) && operand.IsImm8(i): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMPPS", + Operands: []operand.Op{mx, x, i}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "CMPPS", - Operands: []operand.Op{mx, x, i}, - }, nil + return nil, ErrBadOperandTypes } // CMPQ: Compare Two Operands. @@ -2621,20 +4064,63 @@ func CMPPS(mx, x, i operand.Op) (*avo.Instruction, error) { func CMPQ(mr, imr operand.Op) (*avo.Instruction, error) { switch { case operand.IsRax(mr) && operand.IsImm32(imr): + return &avo.Instruction{ + Opcode: "CMPQ", + Operands: []operand.Op{mr, imr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{}, + }, nil case operand.IsR64(mr) && operand.IsImm8(imr): + return &avo.Instruction{ + Opcode: "CMPQ", + Operands: []operand.Op{mr, imr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{}, + }, nil case operand.IsR64(mr) && operand.IsImm32(imr): + return &avo.Instruction{ + Opcode: "CMPQ", + Operands: []operand.Op{mr, imr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{}, + }, nil case operand.IsR64(mr) && operand.IsR64(imr): + return &avo.Instruction{ + Opcode: "CMPQ", + Operands: []operand.Op{mr, imr}, + Inputs: []operand.Op{mr, imr}, + Outputs: []operand.Op{}, + }, nil case operand.IsR64(mr) && operand.IsM64(imr): + return &avo.Instruction{ + Opcode: "CMPQ", + Operands: []operand.Op{mr, imr}, + Inputs: []operand.Op{mr, imr}, + Outputs: []operand.Op{}, + }, nil case operand.IsM64(mr) && operand.IsImm8(imr): + return &avo.Instruction{ + Opcode: "CMPQ", + Operands: []operand.Op{mr, imr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{}, + }, nil case operand.IsM64(mr) && operand.IsImm32(imr): + return &avo.Instruction{ + Opcode: "CMPQ", + Operands: []operand.Op{mr, imr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{}, + }, nil case operand.IsM64(mr) && operand.IsR64(imr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMPQ", + Operands: []operand.Op{mr, imr}, + Inputs: []operand.Op{mr, imr}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "CMPQ", - Operands: []operand.Op{mr, imr}, - }, nil + return nil, ErrBadOperandTypes } // CMPSD: Compare Scalar Double-Precision Floating-Point Values. @@ -2646,14 +4132,21 @@ func CMPQ(mr, imr operand.Op) (*avo.Instruction, error) { func CMPSD(mx, x, i operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x) && operand.IsImm8(i): + return &avo.Instruction{ + Opcode: "CMPSD", + Operands: []operand.Op{mx, x, i}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM64(mx) && operand.IsXmm(x) && operand.IsImm8(i): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMPSD", + Operands: []operand.Op{mx, x, i}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "CMPSD", - Operands: []operand.Op{mx, x, i}, - }, nil + return nil, ErrBadOperandTypes } // CMPSS: Compare Scalar Single-Precision Floating-Point Values. @@ -2665,14 +4158,21 @@ func CMPSD(mx, x, i operand.Op) (*avo.Instruction, error) { func CMPSS(mx, x, i operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x) && operand.IsImm8(i): + return &avo.Instruction{ + Opcode: "CMPSS", + Operands: []operand.Op{mx, x, i}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM32(mx) && operand.IsXmm(x) && operand.IsImm8(i): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMPSS", + Operands: []operand.Op{mx, x, i}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "CMPSS", - Operands: []operand.Op{mx, x, i}, - }, nil + return nil, ErrBadOperandTypes } // CMPW: Compare Two Operands. @@ -2690,20 +4190,63 @@ func CMPSS(mx, x, i operand.Op) (*avo.Instruction, error) { func CMPW(amr, imr operand.Op) (*avo.Instruction, error) { switch { case operand.IsAx(amr) && operand.IsImm16(imr): + return &avo.Instruction{ + Opcode: "CMPW", + Operands: []operand.Op{amr, imr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{}, + }, nil case operand.IsR16(amr) && operand.IsImm8(imr): + return &avo.Instruction{ + Opcode: "CMPW", + Operands: []operand.Op{amr, imr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{}, + }, nil case operand.IsR16(amr) && operand.IsImm16(imr): + return &avo.Instruction{ + Opcode: "CMPW", + Operands: []operand.Op{amr, imr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{}, + }, nil case operand.IsR16(amr) && operand.IsR16(imr): + return &avo.Instruction{ + Opcode: "CMPW", + Operands: []operand.Op{amr, imr}, + Inputs: []operand.Op{amr, imr}, + Outputs: []operand.Op{}, + }, nil case operand.IsR16(amr) && operand.IsM16(imr): + return &avo.Instruction{ + Opcode: "CMPW", + Operands: []operand.Op{amr, imr}, + Inputs: []operand.Op{amr, imr}, + Outputs: []operand.Op{}, + }, nil case operand.IsM16(amr) && operand.IsImm8(imr): + return &avo.Instruction{ + Opcode: "CMPW", + Operands: []operand.Op{amr, imr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{}, + }, nil case operand.IsM16(amr) && operand.IsImm16(imr): + return &avo.Instruction{ + Opcode: "CMPW", + Operands: []operand.Op{amr, imr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{}, + }, nil case operand.IsM16(amr) && operand.IsR16(imr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMPW", + Operands: []operand.Op{amr, imr}, + Inputs: []operand.Op{amr, imr}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "CMPW", - Operands: []operand.Op{amr, imr}, - }, nil + return nil, ErrBadOperandTypes } // CMPXCHG16B: Compare and Exchange 16 Bytes. @@ -2714,13 +4257,14 @@ func CMPW(amr, imr operand.Op) (*avo.Instruction, error) { func CMPXCHG16B(m operand.Op) (*avo.Instruction, error) { switch { case operand.IsM128(m): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMPXCHG16B", + Operands: []operand.Op{m}, + Inputs: []operand.Op{m}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "CMPXCHG16B", - Operands: []operand.Op{m}, - }, nil + return nil, ErrBadOperandTypes } // CMPXCHG8B: Compare and Exchange 8 Bytes. @@ -2731,13 +4275,14 @@ func CMPXCHG16B(m operand.Op) (*avo.Instruction, error) { func CMPXCHG8B(m operand.Op) (*avo.Instruction, error) { switch { case operand.IsM64(m): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMPXCHG8B", + Operands: []operand.Op{m}, + Inputs: []operand.Op{m}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "CMPXCHG8B", - Operands: []operand.Op{m}, - }, nil + return nil, ErrBadOperandTypes } // CMPXCHGB: Compare and Exchange. @@ -2749,14 +4294,21 @@ func CMPXCHG8B(m operand.Op) (*avo.Instruction, error) { func CMPXCHGB(r, mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsR8(r) && operand.IsR8(mr): + return &avo.Instruction{ + Opcode: "CMPXCHGB", + Operands: []operand.Op{r, mr}, + Inputs: []operand.Op{r, mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsR8(r) && operand.IsM8(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMPXCHGB", + Operands: []operand.Op{r, mr}, + Inputs: []operand.Op{r, mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "CMPXCHGB", - Operands: []operand.Op{r, mr}, - }, nil + return nil, ErrBadOperandTypes } // CMPXCHGL: Compare and Exchange. @@ -2768,14 +4320,21 @@ func CMPXCHGB(r, mr operand.Op) (*avo.Instruction, error) { func CMPXCHGL(r, mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsR32(r) && operand.IsR32(mr): + return &avo.Instruction{ + Opcode: "CMPXCHGL", + Operands: []operand.Op{r, mr}, + Inputs: []operand.Op{r, mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsR32(r) && operand.IsM32(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMPXCHGL", + Operands: []operand.Op{r, mr}, + Inputs: []operand.Op{r, mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "CMPXCHGL", - Operands: []operand.Op{r, mr}, - }, nil + return nil, ErrBadOperandTypes } // CMPXCHGQ: Compare and Exchange. @@ -2787,14 +4346,21 @@ func CMPXCHGL(r, mr operand.Op) (*avo.Instruction, error) { func CMPXCHGQ(r, mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsR64(r) && operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "CMPXCHGQ", + Operands: []operand.Op{r, mr}, + Inputs: []operand.Op{r, mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsR64(r) && operand.IsM64(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMPXCHGQ", + Operands: []operand.Op{r, mr}, + Inputs: []operand.Op{r, mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "CMPXCHGQ", - Operands: []operand.Op{r, mr}, - }, nil + return nil, ErrBadOperandTypes } // CMPXCHGW: Compare and Exchange. @@ -2806,14 +4372,21 @@ func CMPXCHGQ(r, mr operand.Op) (*avo.Instruction, error) { func CMPXCHGW(r, mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsR16(r) && operand.IsR16(mr): + return &avo.Instruction{ + Opcode: "CMPXCHGW", + Operands: []operand.Op{r, mr}, + Inputs: []operand.Op{r, mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsR16(r) && operand.IsM16(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CMPXCHGW", + Operands: []operand.Op{r, mr}, + Inputs: []operand.Op{r, mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "CMPXCHGW", - Operands: []operand.Op{r, mr}, - }, nil + return nil, ErrBadOperandTypes } // COMISD: Compare Scalar Ordered Double-Precision Floating-Point Values and Set EFLAGS. @@ -2825,14 +4398,21 @@ func CMPXCHGW(r, mr operand.Op) (*avo.Instruction, error) { func COMISD(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "COMISD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{}, + }, nil case operand.IsM64(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "COMISD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "COMISD", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // COMISS: Compare Scalar Ordered Single-Precision Floating-Point Values and Set EFLAGS. @@ -2844,14 +4424,21 @@ func COMISD(mx, x operand.Op) (*avo.Instruction, error) { func COMISS(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "COMISS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{}, + }, nil case operand.IsM32(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "COMISS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "COMISS", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // CPUID: CPU Identification. @@ -2863,6 +4450,8 @@ func CPUID() (*avo.Instruction, error) { return &avo.Instruction{ Opcode: "CPUID", Operands: nil, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, }, nil } @@ -2875,6 +4464,8 @@ func CQO() (*avo.Instruction, error) { return &avo.Instruction{ Opcode: "CQO", Operands: nil, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, }, nil } @@ -2889,16 +4480,35 @@ func CQO() (*avo.Instruction, error) { func CRC32B(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR8(mr) && operand.IsR32(r): + return &avo.Instruction{ + Opcode: "CRC32B", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM8(mr) && operand.IsR32(r): + return &avo.Instruction{ + Opcode: "CRC32B", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsR8(mr) && operand.IsR64(r): + return &avo.Instruction{ + Opcode: "CRC32B", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM8(mr) && operand.IsR64(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CRC32B", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "CRC32B", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // CRC32L: Accumulate CRC32 Value. @@ -2910,14 +4520,21 @@ func CRC32B(mr, r operand.Op) (*avo.Instruction, error) { func CRC32L(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR32(mr) && operand.IsR32(r): + return &avo.Instruction{ + Opcode: "CRC32L", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM32(mr) && operand.IsR32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CRC32L", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "CRC32L", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // CRC32Q: Accumulate CRC32 Value. @@ -2929,14 +4546,21 @@ func CRC32L(mr, r operand.Op) (*avo.Instruction, error) { func CRC32Q(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR64(mr) && operand.IsR64(r): + return &avo.Instruction{ + Opcode: "CRC32Q", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM64(mr) && operand.IsR64(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CRC32Q", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "CRC32Q", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // CRC32W: Accumulate CRC32 Value. @@ -2948,14 +4572,21 @@ func CRC32Q(mr, r operand.Op) (*avo.Instruction, error) { func CRC32W(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR16(mr) && operand.IsR32(r): + return &avo.Instruction{ + Opcode: "CRC32W", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM16(mr) && operand.IsR32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CRC32W", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "CRC32W", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // CVTPD2PL: Convert Packed Double-Precision FP Values to Packed Dword Integers. @@ -2967,14 +4598,21 @@ func CRC32W(mr, r operand.Op) (*avo.Instruction, error) { func CVTPD2PL(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "CVTPD2PL", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CVTPD2PL", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "CVTPD2PL", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // CVTPD2PS: Convert Packed Double-Precision FP Values to Packed Single-Precision FP Values. @@ -2986,14 +4624,21 @@ func CVTPD2PL(mx, x operand.Op) (*avo.Instruction, error) { func CVTPD2PS(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "CVTPD2PS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CVTPD2PS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "CVTPD2PS", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // CVTPL2PD: Convert Packed Dword Integers to Packed Double-Precision FP Values. @@ -3002,19 +4647,24 @@ func CVTPD2PS(mx, x operand.Op) (*avo.Instruction, error) { // // CVTPL2PD xmm xmm // CVTPL2PD m64 xmm -// CVTPL2PD m64 xmm func CVTPL2PD(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "CVTPL2PD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM64(mx) && operand.IsXmm(x): - case operand.IsM64(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CVTPL2PD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "CVTPL2PD", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // CVTPL2PS: Convert Packed Dword Integers to Packed Single-Precision FP Values. @@ -3026,14 +4676,21 @@ func CVTPL2PD(mx, x operand.Op) (*avo.Instruction, error) { func CVTPL2PS(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "CVTPL2PS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CVTPL2PS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "CVTPL2PS", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // CVTPS2PD: Convert Packed Single-Precision FP Values to Packed Double-Precision FP Values. @@ -3045,14 +4702,21 @@ func CVTPL2PS(mx, x operand.Op) (*avo.Instruction, error) { func CVTPS2PD(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "CVTPS2PD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM64(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CVTPS2PD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "CVTPS2PD", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // CVTPS2PL: Convert Packed Single-Precision FP Values to Packed Dword Integers. @@ -3064,14 +4728,21 @@ func CVTPS2PD(mx, x operand.Op) (*avo.Instruction, error) { func CVTPS2PL(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "CVTPS2PL", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CVTPS2PL", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "CVTPS2PL", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // CVTSD2SL: Convert Scalar Double-Precision FP Value to Integer. @@ -3085,16 +4756,35 @@ func CVTPS2PL(mx, x operand.Op) (*avo.Instruction, error) { func CVTSD2SL(mx, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsR32(r): + return &avo.Instruction{ + Opcode: "CVTSD2SL", + Operands: []operand.Op{mx, r}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM64(mx) && operand.IsR32(r): + return &avo.Instruction{ + Opcode: "CVTSD2SL", + Operands: []operand.Op{mx, r}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{r}, + }, nil case operand.IsXmm(mx) && operand.IsR64(r): + return &avo.Instruction{ + Opcode: "CVTSD2SL", + Operands: []operand.Op{mx, r}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM64(mx) && operand.IsR64(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CVTSD2SL", + Operands: []operand.Op{mx, r}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "CVTSD2SL", - Operands: []operand.Op{mx, r}, - }, nil + return nil, ErrBadOperandTypes } // CVTSD2SS: Convert Scalar Double-Precision FP Value to Scalar Single-Precision FP Value. @@ -3106,14 +4796,21 @@ func CVTSD2SL(mx, r operand.Op) (*avo.Instruction, error) { func CVTSD2SS(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "CVTSD2SS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM64(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CVTSD2SS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "CVTSD2SS", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // CVTSL2SD: Convert Dword Integer to Scalar Double-Precision FP Value. @@ -3125,14 +4822,21 @@ func CVTSD2SS(mx, x operand.Op) (*avo.Instruction, error) { func CVTSL2SD(mr, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsR32(mr) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "CVTSL2SD", + Operands: []operand.Op{mr, x}, + Inputs: []operand.Op{mr, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM32(mr) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CVTSL2SD", + Operands: []operand.Op{mr, x}, + Inputs: []operand.Op{mr, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "CVTSL2SD", - Operands: []operand.Op{mr, x}, - }, nil + return nil, ErrBadOperandTypes } // CVTSL2SS: Convert Dword Integer to Scalar Single-Precision FP Value. @@ -3144,14 +4848,21 @@ func CVTSL2SD(mr, x operand.Op) (*avo.Instruction, error) { func CVTSL2SS(mr, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsR32(mr) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "CVTSL2SS", + Operands: []operand.Op{mr, x}, + Inputs: []operand.Op{mr, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM32(mr) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CVTSL2SS", + Operands: []operand.Op{mr, x}, + Inputs: []operand.Op{mr, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "CVTSL2SS", - Operands: []operand.Op{mr, x}, - }, nil + return nil, ErrBadOperandTypes } // CVTSQ2SD: Convert Dword Integer to Scalar Double-Precision FP Value. @@ -3163,14 +4874,21 @@ func CVTSL2SS(mr, x operand.Op) (*avo.Instruction, error) { func CVTSQ2SD(mr, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsR64(mr) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "CVTSQ2SD", + Operands: []operand.Op{mr, x}, + Inputs: []operand.Op{mr, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM64(mr) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CVTSQ2SD", + Operands: []operand.Op{mr, x}, + Inputs: []operand.Op{mr, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "CVTSQ2SD", - Operands: []operand.Op{mr, x}, - }, nil + return nil, ErrBadOperandTypes } // CVTSQ2SS: Convert Dword Integer to Scalar Single-Precision FP Value. @@ -3182,14 +4900,21 @@ func CVTSQ2SD(mr, x operand.Op) (*avo.Instruction, error) { func CVTSQ2SS(mr, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsR64(mr) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "CVTSQ2SS", + Operands: []operand.Op{mr, x}, + Inputs: []operand.Op{mr, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM64(mr) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CVTSQ2SS", + Operands: []operand.Op{mr, x}, + Inputs: []operand.Op{mr, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "CVTSQ2SS", - Operands: []operand.Op{mr, x}, - }, nil + return nil, ErrBadOperandTypes } // CVTSS2SD: Convert Scalar Single-Precision FP Value to Scalar Double-Precision FP Value. @@ -3201,14 +4926,21 @@ func CVTSQ2SS(mr, x operand.Op) (*avo.Instruction, error) { func CVTSS2SD(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "CVTSS2SD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM32(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CVTSS2SD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "CVTSS2SD", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // CVTSS2SL: Convert Scalar Single-Precision FP Value to Dword Integer. @@ -3222,16 +4954,35 @@ func CVTSS2SD(mx, x operand.Op) (*avo.Instruction, error) { func CVTSS2SL(mx, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsR32(r): + return &avo.Instruction{ + Opcode: "CVTSS2SL", + Operands: []operand.Op{mx, r}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM32(mx) && operand.IsR32(r): + return &avo.Instruction{ + Opcode: "CVTSS2SL", + Operands: []operand.Op{mx, r}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{r}, + }, nil case operand.IsXmm(mx) && operand.IsR64(r): + return &avo.Instruction{ + Opcode: "CVTSS2SL", + Operands: []operand.Op{mx, r}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM32(mx) && operand.IsR64(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CVTSS2SL", + Operands: []operand.Op{mx, r}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "CVTSS2SL", - Operands: []operand.Op{mx, r}, - }, nil + return nil, ErrBadOperandTypes } // CVTTPD2PL: Convert with Truncation Packed Double-Precision FP Values to Packed Dword Integers. @@ -3243,14 +4994,21 @@ func CVTSS2SL(mx, r operand.Op) (*avo.Instruction, error) { func CVTTPD2PL(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "CVTTPD2PL", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CVTTPD2PL", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "CVTTPD2PL", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // CVTTPS2PL: Convert with Truncation Packed Single-Precision FP Values to Packed Dword Integers. @@ -3262,14 +5020,21 @@ func CVTTPD2PL(mx, x operand.Op) (*avo.Instruction, error) { func CVTTPS2PL(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "CVTTPS2PL", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CVTTPS2PL", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "CVTTPS2PL", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // CVTTSD2SL: Convert with Truncation Scalar Double-Precision FP Value to Signed Integer. @@ -3281,14 +5046,21 @@ func CVTTPS2PL(mx, x operand.Op) (*avo.Instruction, error) { func CVTTSD2SL(mx, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsR32(r): + return &avo.Instruction{ + Opcode: "CVTTSD2SL", + Operands: []operand.Op{mx, r}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM64(mx) && operand.IsR32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CVTTSD2SL", + Operands: []operand.Op{mx, r}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "CVTTSD2SL", - Operands: []operand.Op{mx, r}, - }, nil + return nil, ErrBadOperandTypes } // CVTTSD2SQ: Convert with Truncation Scalar Double-Precision FP Value to Signed Integer. @@ -3300,14 +5072,21 @@ func CVTTSD2SL(mx, r operand.Op) (*avo.Instruction, error) { func CVTTSD2SQ(mx, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsR64(r): + return &avo.Instruction{ + Opcode: "CVTTSD2SQ", + Operands: []operand.Op{mx, r}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM64(mx) && operand.IsR64(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CVTTSD2SQ", + Operands: []operand.Op{mx, r}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "CVTTSD2SQ", - Operands: []operand.Op{mx, r}, - }, nil + return nil, ErrBadOperandTypes } // CVTTSS2SL: Convert with Truncation Scalar Single-Precision FP Value to Dword Integer. @@ -3321,16 +5100,35 @@ func CVTTSD2SQ(mx, r operand.Op) (*avo.Instruction, error) { func CVTTSS2SL(mx, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsR32(r): + return &avo.Instruction{ + Opcode: "CVTTSS2SL", + Operands: []operand.Op{mx, r}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM32(mx) && operand.IsR32(r): + return &avo.Instruction{ + Opcode: "CVTTSS2SL", + Operands: []operand.Op{mx, r}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{r}, + }, nil case operand.IsXmm(mx) && operand.IsR64(r): + return &avo.Instruction{ + Opcode: "CVTTSS2SL", + Operands: []operand.Op{mx, r}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM32(mx) && operand.IsR64(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "CVTTSS2SL", + Operands: []operand.Op{mx, r}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "CVTTSS2SL", - Operands: []operand.Op{mx, r}, - }, nil + return nil, ErrBadOperandTypes } // CWD: Convert Word to Doubleword. @@ -3342,6 +5140,8 @@ func CWD() (*avo.Instruction, error) { return &avo.Instruction{ Opcode: "CWD", Operands: nil, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, }, nil } @@ -3354,6 +5154,8 @@ func CWDE() (*avo.Instruction, error) { return &avo.Instruction{ Opcode: "CWDE", Operands: nil, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, }, nil } @@ -3366,14 +5168,21 @@ func CWDE() (*avo.Instruction, error) { func DECB(mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsR8(mr): + return &avo.Instruction{ + Opcode: "DECB", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsM8(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "DECB", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "DECB", - Operands: []operand.Op{mr}, - }, nil + return nil, ErrBadOperandTypes } // DECL: Decrement by 1. @@ -3385,14 +5194,21 @@ func DECB(mr operand.Op) (*avo.Instruction, error) { func DECL(mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsR32(mr): + return &avo.Instruction{ + Opcode: "DECL", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsM32(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "DECL", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "DECL", - Operands: []operand.Op{mr}, - }, nil + return nil, ErrBadOperandTypes } // DECQ: Decrement by 1. @@ -3404,14 +5220,21 @@ func DECL(mr operand.Op) (*avo.Instruction, error) { func DECQ(mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "DECQ", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsM64(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "DECQ", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "DECQ", - Operands: []operand.Op{mr}, - }, nil + return nil, ErrBadOperandTypes } // DECW: Decrement by 1. @@ -3423,14 +5246,21 @@ func DECQ(mr operand.Op) (*avo.Instruction, error) { func DECW(mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsR16(mr): + return &avo.Instruction{ + Opcode: "DECW", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsM16(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "DECW", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "DECW", - Operands: []operand.Op{mr}, - }, nil + return nil, ErrBadOperandTypes } // DIVB: Unsigned Divide. @@ -3442,14 +5272,21 @@ func DECW(mr operand.Op) (*avo.Instruction, error) { func DIVB(mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsR8(mr): + return &avo.Instruction{ + Opcode: "DIVB", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{}, + }, nil case operand.IsM8(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "DIVB", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "DIVB", - Operands: []operand.Op{mr}, - }, nil + return nil, ErrBadOperandTypes } // DIVL: Unsigned Divide. @@ -3461,14 +5298,21 @@ func DIVB(mr operand.Op) (*avo.Instruction, error) { func DIVL(mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsR32(mr): + return &avo.Instruction{ + Opcode: "DIVL", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{}, + }, nil case operand.IsM32(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "DIVL", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "DIVL", - Operands: []operand.Op{mr}, - }, nil + return nil, ErrBadOperandTypes } // DIVPD: Divide Packed Double-Precision Floating-Point Values. @@ -3480,14 +5324,21 @@ func DIVL(mr operand.Op) (*avo.Instruction, error) { func DIVPD(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "DIVPD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "DIVPD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "DIVPD", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // DIVPS: Divide Packed Single-Precision Floating-Point Values. @@ -3499,14 +5350,21 @@ func DIVPD(mx, x operand.Op) (*avo.Instruction, error) { func DIVPS(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "DIVPS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "DIVPS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "DIVPS", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // DIVQ: Unsigned Divide. @@ -3518,14 +5376,21 @@ func DIVPS(mx, x operand.Op) (*avo.Instruction, error) { func DIVQ(mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "DIVQ", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{}, + }, nil case operand.IsM64(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "DIVQ", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "DIVQ", - Operands: []operand.Op{mr}, - }, nil + return nil, ErrBadOperandTypes } // DIVSD: Divide Scalar Double-Precision Floating-Point Values. @@ -3537,14 +5402,21 @@ func DIVQ(mr operand.Op) (*avo.Instruction, error) { func DIVSD(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "DIVSD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM64(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "DIVSD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "DIVSD", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // DIVSS: Divide Scalar Single-Precision Floating-Point Values. @@ -3556,14 +5428,21 @@ func DIVSD(mx, x operand.Op) (*avo.Instruction, error) { func DIVSS(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "DIVSS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM32(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "DIVSS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "DIVSS", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // DIVW: Unsigned Divide. @@ -3575,14 +5454,21 @@ func DIVSS(mx, x operand.Op) (*avo.Instruction, error) { func DIVW(mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsR16(mr): + return &avo.Instruction{ + Opcode: "DIVW", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{}, + }, nil case operand.IsM16(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "DIVW", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "DIVW", - Operands: []operand.Op{mr}, - }, nil + return nil, ErrBadOperandTypes } // DPPD: Dot Product of Packed Double Precision Floating-Point Values. @@ -3594,14 +5480,21 @@ func DIVW(mr operand.Op) (*avo.Instruction, error) { func DPPD(i, mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "DPPD", + Operands: []operand.Op{i, mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsImm8(i) && operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "DPPD", + Operands: []operand.Op{i, mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "DPPD", - Operands: []operand.Op{i, mx, x}, - }, nil + return nil, ErrBadOperandTypes } // DPPS: Dot Product of Packed Single Precision Floating-Point Values. @@ -3613,14 +5506,21 @@ func DPPD(i, mx, x operand.Op) (*avo.Instruction, error) { func DPPS(i, mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "DPPS", + Operands: []operand.Op{i, mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsImm8(i) && operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "DPPS", + Operands: []operand.Op{i, mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "DPPS", - Operands: []operand.Op{i, mx, x}, - }, nil + return nil, ErrBadOperandTypes } // EXTRACTPS: Extract Packed Single Precision Floating-Point Value. @@ -3632,14 +5532,21 @@ func DPPS(i, mx, x operand.Op) (*avo.Instruction, error) { func EXTRACTPS(i, x, mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm2u(i) && operand.IsXmm(x) && operand.IsR32(mr): + return &avo.Instruction{ + Opcode: "EXTRACTPS", + Operands: []operand.Op{i, x, mr}, + Inputs: []operand.Op{x}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm2u(i) && operand.IsXmm(x) && operand.IsM32(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "EXTRACTPS", + Operands: []operand.Op{i, x, mr}, + Inputs: []operand.Op{x}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "EXTRACTPS", - Operands: []operand.Op{i, x, mr}, - }, nil + return nil, ErrBadOperandTypes } // HADDPD: Packed Double-FP Horizontal Add. @@ -3651,14 +5558,21 @@ func EXTRACTPS(i, x, mr operand.Op) (*avo.Instruction, error) { func HADDPD(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "HADDPD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "HADDPD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "HADDPD", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // HADDPS: Packed Single-FP Horizontal Add. @@ -3670,14 +5584,21 @@ func HADDPD(mx, x operand.Op) (*avo.Instruction, error) { func HADDPS(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "HADDPS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "HADDPS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "HADDPS", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // HSUBPD: Packed Double-FP Horizontal Subtract. @@ -3689,14 +5610,21 @@ func HADDPS(mx, x operand.Op) (*avo.Instruction, error) { func HSUBPD(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "HSUBPD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "HSUBPD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "HSUBPD", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // HSUBPS: Packed Single-FP Horizontal Subtract. @@ -3708,14 +5636,21 @@ func HSUBPD(mx, x operand.Op) (*avo.Instruction, error) { func HSUBPS(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "HSUBPS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "HSUBPS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "HSUBPS", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // IDIVB: Signed Divide. @@ -3727,14 +5662,21 @@ func HSUBPS(mx, x operand.Op) (*avo.Instruction, error) { func IDIVB(mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsR8(mr): + return &avo.Instruction{ + Opcode: "IDIVB", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{}, + }, nil case operand.IsM8(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "IDIVB", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "IDIVB", - Operands: []operand.Op{mr}, - }, nil + return nil, ErrBadOperandTypes } // IDIVL: Signed Divide. @@ -3746,14 +5688,21 @@ func IDIVB(mr operand.Op) (*avo.Instruction, error) { func IDIVL(mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsR32(mr): + return &avo.Instruction{ + Opcode: "IDIVL", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{}, + }, nil case operand.IsM32(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "IDIVL", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "IDIVL", - Operands: []operand.Op{mr}, - }, nil + return nil, ErrBadOperandTypes } // IDIVQ: Signed Divide. @@ -3765,14 +5714,21 @@ func IDIVL(mr operand.Op) (*avo.Instruction, error) { func IDIVQ(mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "IDIVQ", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{}, + }, nil case operand.IsM64(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "IDIVQ", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "IDIVQ", - Operands: []operand.Op{mr}, - }, nil + return nil, ErrBadOperandTypes } // IDIVW: Signed Divide. @@ -3784,14 +5740,21 @@ func IDIVQ(mr operand.Op) (*avo.Instruction, error) { func IDIVW(mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsR16(mr): + return &avo.Instruction{ + Opcode: "IDIVW", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{}, + }, nil case operand.IsM16(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "IDIVW", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "IDIVW", - Operands: []operand.Op{mr}, - }, nil + return nil, ErrBadOperandTypes } // IMUL3L: Signed Multiply. @@ -3805,16 +5768,35 @@ func IDIVW(mr operand.Op) (*avo.Instruction, error) { func IMUL3L(i, mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsR32(mr) && operand.IsR32(r): + return &avo.Instruction{ + Opcode: "IMUL3L", + Operands: []operand.Op{i, mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil case operand.IsImm32(i) && operand.IsR32(mr) && operand.IsR32(r): + return &avo.Instruction{ + Opcode: "IMUL3L", + Operands: []operand.Op{i, mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil case operand.IsImm8(i) && operand.IsM32(mr) && operand.IsR32(r): + return &avo.Instruction{ + Opcode: "IMUL3L", + Operands: []operand.Op{i, mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil case operand.IsImm32(i) && operand.IsM32(mr) && operand.IsR32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "IMUL3L", + Operands: []operand.Op{i, mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "IMUL3L", - Operands: []operand.Op{i, mr, r}, - }, nil + return nil, ErrBadOperandTypes } // IMUL3Q: Signed Multiply. @@ -3828,16 +5810,35 @@ func IMUL3L(i, mr, r operand.Op) (*avo.Instruction, error) { func IMUL3Q(i, mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsR64(mr) && operand.IsR64(r): + return &avo.Instruction{ + Opcode: "IMUL3Q", + Operands: []operand.Op{i, mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil case operand.IsImm32(i) && operand.IsR64(mr) && operand.IsR64(r): + return &avo.Instruction{ + Opcode: "IMUL3Q", + Operands: []operand.Op{i, mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil case operand.IsImm8(i) && operand.IsM64(mr) && operand.IsR64(r): + return &avo.Instruction{ + Opcode: "IMUL3Q", + Operands: []operand.Op{i, mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil case operand.IsImm32(i) && operand.IsM64(mr) && operand.IsR64(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "IMUL3Q", + Operands: []operand.Op{i, mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "IMUL3Q", - Operands: []operand.Op{i, mr, r}, - }, nil + return nil, ErrBadOperandTypes } // IMUL3W: Signed Multiply. @@ -3851,16 +5852,35 @@ func IMUL3Q(i, mr, r operand.Op) (*avo.Instruction, error) { func IMUL3W(i, mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsR16(mr) && operand.IsR16(r): + return &avo.Instruction{ + Opcode: "IMUL3W", + Operands: []operand.Op{i, mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil case operand.IsImm16(i) && operand.IsR16(mr) && operand.IsR16(r): + return &avo.Instruction{ + Opcode: "IMUL3W", + Operands: []operand.Op{i, mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil case operand.IsImm8(i) && operand.IsM16(mr) && operand.IsR16(r): + return &avo.Instruction{ + Opcode: "IMUL3W", + Operands: []operand.Op{i, mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil case operand.IsImm16(i) && operand.IsM16(mr) && operand.IsR16(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "IMUL3W", + Operands: []operand.Op{i, mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "IMUL3W", - Operands: []operand.Op{i, mr, r}, - }, nil + return nil, ErrBadOperandTypes } // IMULB: Signed Multiply. @@ -3872,14 +5892,21 @@ func IMUL3W(i, mr, r operand.Op) (*avo.Instruction, error) { func IMULB(mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsR8(mr): + return &avo.Instruction{ + Opcode: "IMULB", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{}, + }, nil case operand.IsM8(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "IMULB", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "IMULB", - Operands: []operand.Op{mr}, - }, nil + return nil, ErrBadOperandTypes } // IMULL: Signed Multiply. @@ -3893,16 +5920,35 @@ func IMULB(mr operand.Op) (*avo.Instruction, error) { func IMULL(ops ...operand.Op) (*avo.Instruction, error) { switch { case len(ops) == 1 && operand.IsR32(ops[0]): + return &avo.Instruction{ + Opcode: "IMULL", + Operands: ops, + Inputs: []operand.Op{ops[0]}, + Outputs: []operand.Op{}, + }, nil case len(ops) == 1 && operand.IsM32(ops[0]): + return &avo.Instruction{ + Opcode: "IMULL", + Operands: ops, + Inputs: []operand.Op{ops[0]}, + Outputs: []operand.Op{}, + }, nil case len(ops) == 2 && operand.IsR32(ops[0]) && operand.IsR32(ops[1]): + return &avo.Instruction{ + Opcode: "IMULL", + Operands: ops, + Inputs: []operand.Op{ops[0], ops[1]}, + Outputs: []operand.Op{ops[1]}, + }, nil case len(ops) == 2 && operand.IsM32(ops[0]) && operand.IsR32(ops[1]): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "IMULL", + Operands: ops, + Inputs: []operand.Op{ops[0], ops[1]}, + Outputs: []operand.Op{ops[1]}, + }, nil } - return &avo.Instruction{ - Opcode: "IMULL", - Operands: ops, - }, nil + return nil, ErrBadOperandTypes } // IMULQ: Signed Multiply. @@ -3916,16 +5962,35 @@ func IMULL(ops ...operand.Op) (*avo.Instruction, error) { func IMULQ(ops ...operand.Op) (*avo.Instruction, error) { switch { case len(ops) == 1 && operand.IsR64(ops[0]): + return &avo.Instruction{ + Opcode: "IMULQ", + Operands: ops, + Inputs: []operand.Op{ops[0]}, + Outputs: []operand.Op{}, + }, nil case len(ops) == 1 && operand.IsM64(ops[0]): + return &avo.Instruction{ + Opcode: "IMULQ", + Operands: ops, + Inputs: []operand.Op{ops[0]}, + Outputs: []operand.Op{}, + }, nil case len(ops) == 2 && operand.IsR64(ops[0]) && operand.IsR64(ops[1]): + return &avo.Instruction{ + Opcode: "IMULQ", + Operands: ops, + Inputs: []operand.Op{ops[0], ops[1]}, + Outputs: []operand.Op{ops[1]}, + }, nil case len(ops) == 2 && operand.IsM64(ops[0]) && operand.IsR64(ops[1]): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "IMULQ", + Operands: ops, + Inputs: []operand.Op{ops[0], ops[1]}, + Outputs: []operand.Op{ops[1]}, + }, nil } - return &avo.Instruction{ - Opcode: "IMULQ", - Operands: ops, - }, nil + return nil, ErrBadOperandTypes } // IMULW: Signed Multiply. @@ -3939,16 +6004,35 @@ func IMULQ(ops ...operand.Op) (*avo.Instruction, error) { func IMULW(ops ...operand.Op) (*avo.Instruction, error) { switch { case len(ops) == 1 && operand.IsR16(ops[0]): + return &avo.Instruction{ + Opcode: "IMULW", + Operands: ops, + Inputs: []operand.Op{ops[0]}, + Outputs: []operand.Op{}, + }, nil case len(ops) == 1 && operand.IsM16(ops[0]): + return &avo.Instruction{ + Opcode: "IMULW", + Operands: ops, + Inputs: []operand.Op{ops[0]}, + Outputs: []operand.Op{}, + }, nil case len(ops) == 2 && operand.IsR16(ops[0]) && operand.IsR16(ops[1]): + return &avo.Instruction{ + Opcode: "IMULW", + Operands: ops, + Inputs: []operand.Op{ops[0], ops[1]}, + Outputs: []operand.Op{ops[1]}, + }, nil case len(ops) == 2 && operand.IsM16(ops[0]) && operand.IsR16(ops[1]): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "IMULW", + Operands: ops, + Inputs: []operand.Op{ops[0], ops[1]}, + Outputs: []operand.Op{ops[1]}, + }, nil } - return &avo.Instruction{ - Opcode: "IMULW", - Operands: ops, - }, nil + return nil, ErrBadOperandTypes } // INCB: Increment by 1. @@ -3960,14 +6044,21 @@ func IMULW(ops ...operand.Op) (*avo.Instruction, error) { func INCB(mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsR8(mr): + return &avo.Instruction{ + Opcode: "INCB", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsM8(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "INCB", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "INCB", - Operands: []operand.Op{mr}, - }, nil + return nil, ErrBadOperandTypes } // INCL: Increment by 1. @@ -3979,14 +6070,21 @@ func INCB(mr operand.Op) (*avo.Instruction, error) { func INCL(mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsR32(mr): + return &avo.Instruction{ + Opcode: "INCL", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsM32(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "INCL", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "INCL", - Operands: []operand.Op{mr}, - }, nil + return nil, ErrBadOperandTypes } // INCQ: Increment by 1. @@ -3998,14 +6096,21 @@ func INCL(mr operand.Op) (*avo.Instruction, error) { func INCQ(mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "INCQ", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsM64(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "INCQ", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "INCQ", - Operands: []operand.Op{mr}, - }, nil + return nil, ErrBadOperandTypes } // INCW: Increment by 1. @@ -4017,14 +6122,21 @@ func INCQ(mr operand.Op) (*avo.Instruction, error) { func INCW(mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsR16(mr): + return &avo.Instruction{ + Opcode: "INCW", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsM16(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "INCW", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "INCW", - Operands: []operand.Op{mr}, - }, nil + return nil, ErrBadOperandTypes } // INSERTPS: Insert Packed Single Precision Floating-Point Value. @@ -4036,14 +6148,21 @@ func INCW(mr operand.Op) (*avo.Instruction, error) { func INSERTPS(i, mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "INSERTPS", + Operands: []operand.Op{i, mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsImm8(i) && operand.IsM32(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "INSERTPS", + Operands: []operand.Op{i, mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "INSERTPS", - Operands: []operand.Op{i, mx, x}, - }, nil + return nil, ErrBadOperandTypes } // INT: Call to Interrupt Procedure. @@ -4055,14 +6174,21 @@ func INSERTPS(i, mx, x operand.Op) (*avo.Instruction, error) { func INT(i operand.Op) (*avo.Instruction, error) { switch { case operand.Is3(i): + return &avo.Instruction{ + Opcode: "INT", + Operands: []operand.Op{i}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + }, nil case operand.IsImm8(i): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "INT", + Operands: []operand.Op{i}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "INT", - Operands: []operand.Op{i}, - }, nil + return nil, ErrBadOperandTypes } // JA: Jump if above (CF == 0 and ZF == 0). @@ -4071,23 +6197,28 @@ func INT(i operand.Op) (*avo.Instruction, error) { // // JA rel8 // JA rel32 -// JA rel8 -// JA rel32 func JA(r operand.Op) (*avo.Instruction, error) { switch { case operand.IsRel8(r): + return &avo.Instruction{ + Opcode: "JA", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil case operand.IsRel32(r): - case operand.IsRel8(r): - case operand.IsRel32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "JA", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil } - return &avo.Instruction{ - Opcode: "JA", - Operands: []operand.Op{r}, - IsBranch: true, - IsConditional: true, - }, nil + return nil, ErrBadOperandTypes } // JAE: Jump if above or equal (CF == 0). @@ -4096,27 +6227,28 @@ func JA(r operand.Op) (*avo.Instruction, error) { // // JAE rel8 // JAE rel32 -// JAE rel8 -// JAE rel32 -// JAE rel8 -// JAE rel32 func JAE(r operand.Op) (*avo.Instruction, error) { switch { case operand.IsRel8(r): + return &avo.Instruction{ + Opcode: "JAE", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil case operand.IsRel32(r): - case operand.IsRel8(r): - case operand.IsRel32(r): - case operand.IsRel8(r): - case operand.IsRel32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "JAE", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil } - return &avo.Instruction{ - Opcode: "JAE", - Operands: []operand.Op{r}, - IsBranch: true, - IsConditional: true, - }, nil + return nil, ErrBadOperandTypes } // JB: Jump if below (CF == 1). @@ -4125,27 +6257,28 @@ func JAE(r operand.Op) (*avo.Instruction, error) { // // JB rel8 // JB rel32 -// JB rel8 -// JB rel32 -// JB rel8 -// JB rel32 func JB(r operand.Op) (*avo.Instruction, error) { switch { case operand.IsRel8(r): + return &avo.Instruction{ + Opcode: "JB", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil case operand.IsRel32(r): - case operand.IsRel8(r): - case operand.IsRel32(r): - case operand.IsRel8(r): - case operand.IsRel32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "JB", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil } - return &avo.Instruction{ - Opcode: "JB", - Operands: []operand.Op{r}, - IsBranch: true, - IsConditional: true, - }, nil + return nil, ErrBadOperandTypes } // JBE: Jump if below or equal (CF == 1 or ZF == 1). @@ -4154,23 +6287,28 @@ func JB(r operand.Op) (*avo.Instruction, error) { // // JBE rel8 // JBE rel32 -// JBE rel8 -// JBE rel32 func JBE(r operand.Op) (*avo.Instruction, error) { switch { case operand.IsRel8(r): + return &avo.Instruction{ + Opcode: "JBE", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil case operand.IsRel32(r): - case operand.IsRel8(r): - case operand.IsRel32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "JBE", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil } - return &avo.Instruction{ - Opcode: "JBE", - Operands: []operand.Op{r}, - IsBranch: true, - IsConditional: true, - }, nil + return nil, ErrBadOperandTypes } // JC: Jump if below (CF == 1). @@ -4179,27 +6317,28 @@ func JBE(r operand.Op) (*avo.Instruction, error) { // // JC rel8 // JC rel32 -// JC rel8 -// JC rel32 -// JC rel8 -// JC rel32 func JC(r operand.Op) (*avo.Instruction, error) { switch { case operand.IsRel8(r): + return &avo.Instruction{ + Opcode: "JC", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil case operand.IsRel32(r): - case operand.IsRel8(r): - case operand.IsRel32(r): - case operand.IsRel8(r): - case operand.IsRel32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "JC", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil } - return &avo.Instruction{ - Opcode: "JC", - Operands: []operand.Op{r}, - IsBranch: true, - IsConditional: true, - }, nil + return nil, ErrBadOperandTypes } // JCC: Jump if above or equal (CF == 0). @@ -4208,27 +6347,28 @@ func JC(r operand.Op) (*avo.Instruction, error) { // // JCC rel8 // JCC rel32 -// JCC rel8 -// JCC rel32 -// JCC rel8 -// JCC rel32 func JCC(r operand.Op) (*avo.Instruction, error) { switch { case operand.IsRel8(r): + return &avo.Instruction{ + Opcode: "JCC", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil case operand.IsRel32(r): - case operand.IsRel8(r): - case operand.IsRel32(r): - case operand.IsRel8(r): - case operand.IsRel32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "JCC", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil } - return &avo.Instruction{ - Opcode: "JCC", - Operands: []operand.Op{r}, - IsBranch: true, - IsConditional: true, - }, nil + return nil, ErrBadOperandTypes } // JCS: Jump if below (CF == 1). @@ -4237,27 +6377,28 @@ func JCC(r operand.Op) (*avo.Instruction, error) { // // JCS rel8 // JCS rel32 -// JCS rel8 -// JCS rel32 -// JCS rel8 -// JCS rel32 func JCS(r operand.Op) (*avo.Instruction, error) { switch { case operand.IsRel8(r): + return &avo.Instruction{ + Opcode: "JCS", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil case operand.IsRel32(r): - case operand.IsRel8(r): - case operand.IsRel32(r): - case operand.IsRel8(r): - case operand.IsRel32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "JCS", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil } - return &avo.Instruction{ - Opcode: "JCS", - Operands: []operand.Op{r}, - IsBranch: true, - IsConditional: true, - }, nil + return nil, ErrBadOperandTypes } // JCXZL: Jump if ECX register is 0. @@ -4268,15 +6409,16 @@ func JCS(r operand.Op) (*avo.Instruction, error) { func JCXZL(r operand.Op) (*avo.Instruction, error) { switch { case operand.IsRel8(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "JCXZL", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil } - return &avo.Instruction{ - Opcode: "JCXZL", - Operands: []operand.Op{r}, - IsBranch: true, - IsConditional: true, - }, nil + return nil, ErrBadOperandTypes } // JCXZQ: Jump if RCX register is 0. @@ -4287,15 +6429,16 @@ func JCXZL(r operand.Op) (*avo.Instruction, error) { func JCXZQ(r operand.Op) (*avo.Instruction, error) { switch { case operand.IsRel8(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "JCXZQ", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil } - return &avo.Instruction{ - Opcode: "JCXZQ", - Operands: []operand.Op{r}, - IsBranch: true, - IsConditional: true, - }, nil + return nil, ErrBadOperandTypes } // JE: Jump if equal (ZF == 1). @@ -4304,23 +6447,28 @@ func JCXZQ(r operand.Op) (*avo.Instruction, error) { // // JE rel8 // JE rel32 -// JE rel8 -// JE rel32 func JE(r operand.Op) (*avo.Instruction, error) { switch { case operand.IsRel8(r): + return &avo.Instruction{ + Opcode: "JE", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil case operand.IsRel32(r): - case operand.IsRel8(r): - case operand.IsRel32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "JE", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil } - return &avo.Instruction{ - Opcode: "JE", - Operands: []operand.Op{r}, - IsBranch: true, - IsConditional: true, - }, nil + return nil, ErrBadOperandTypes } // JEQ: Jump if equal (ZF == 1). @@ -4329,23 +6477,28 @@ func JE(r operand.Op) (*avo.Instruction, error) { // // JEQ rel8 // JEQ rel32 -// JEQ rel8 -// JEQ rel32 func JEQ(r operand.Op) (*avo.Instruction, error) { switch { case operand.IsRel8(r): + return &avo.Instruction{ + Opcode: "JEQ", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil case operand.IsRel32(r): - case operand.IsRel8(r): - case operand.IsRel32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "JEQ", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil } - return &avo.Instruction{ - Opcode: "JEQ", - Operands: []operand.Op{r}, - IsBranch: true, - IsConditional: true, - }, nil + return nil, ErrBadOperandTypes } // JG: Jump if greater (ZF == 0 and SF == OF). @@ -4354,23 +6507,28 @@ func JEQ(r operand.Op) (*avo.Instruction, error) { // // JG rel8 // JG rel32 -// JG rel8 -// JG rel32 func JG(r operand.Op) (*avo.Instruction, error) { switch { case operand.IsRel8(r): + return &avo.Instruction{ + Opcode: "JG", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil case operand.IsRel32(r): - case operand.IsRel8(r): - case operand.IsRel32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "JG", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil } - return &avo.Instruction{ - Opcode: "JG", - Operands: []operand.Op{r}, - IsBranch: true, - IsConditional: true, - }, nil + return nil, ErrBadOperandTypes } // JGE: Jump if greater or equal (SF == OF). @@ -4379,23 +6537,28 @@ func JG(r operand.Op) (*avo.Instruction, error) { // // JGE rel8 // JGE rel32 -// JGE rel8 -// JGE rel32 func JGE(r operand.Op) (*avo.Instruction, error) { switch { case operand.IsRel8(r): + return &avo.Instruction{ + Opcode: "JGE", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil case operand.IsRel32(r): - case operand.IsRel8(r): - case operand.IsRel32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "JGE", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil } - return &avo.Instruction{ - Opcode: "JGE", - Operands: []operand.Op{r}, - IsBranch: true, - IsConditional: true, - }, nil + return nil, ErrBadOperandTypes } // JGT: Jump if greater (ZF == 0 and SF == OF). @@ -4404,23 +6567,28 @@ func JGE(r operand.Op) (*avo.Instruction, error) { // // JGT rel8 // JGT rel32 -// JGT rel8 -// JGT rel32 func JGT(r operand.Op) (*avo.Instruction, error) { switch { case operand.IsRel8(r): + return &avo.Instruction{ + Opcode: "JGT", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil case operand.IsRel32(r): - case operand.IsRel8(r): - case operand.IsRel32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "JGT", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil } - return &avo.Instruction{ - Opcode: "JGT", - Operands: []operand.Op{r}, - IsBranch: true, - IsConditional: true, - }, nil + return nil, ErrBadOperandTypes } // JHI: Jump if above (CF == 0 and ZF == 0). @@ -4429,23 +6597,28 @@ func JGT(r operand.Op) (*avo.Instruction, error) { // // JHI rel8 // JHI rel32 -// JHI rel8 -// JHI rel32 func JHI(r operand.Op) (*avo.Instruction, error) { switch { case operand.IsRel8(r): + return &avo.Instruction{ + Opcode: "JHI", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil case operand.IsRel32(r): - case operand.IsRel8(r): - case operand.IsRel32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "JHI", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil } - return &avo.Instruction{ - Opcode: "JHI", - Operands: []operand.Op{r}, - IsBranch: true, - IsConditional: true, - }, nil + return nil, ErrBadOperandTypes } // JHS: Jump if above or equal (CF == 0). @@ -4454,27 +6627,28 @@ func JHI(r operand.Op) (*avo.Instruction, error) { // // JHS rel8 // JHS rel32 -// JHS rel8 -// JHS rel32 -// JHS rel8 -// JHS rel32 func JHS(r operand.Op) (*avo.Instruction, error) { switch { case operand.IsRel8(r): + return &avo.Instruction{ + Opcode: "JHS", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil case operand.IsRel32(r): - case operand.IsRel8(r): - case operand.IsRel32(r): - case operand.IsRel8(r): - case operand.IsRel32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "JHS", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil } - return &avo.Instruction{ - Opcode: "JHS", - Operands: []operand.Op{r}, - IsBranch: true, - IsConditional: true, - }, nil + return nil, ErrBadOperandTypes } // JL: Jump if less (SF != OF). @@ -4483,23 +6657,28 @@ func JHS(r operand.Op) (*avo.Instruction, error) { // // JL rel8 // JL rel32 -// JL rel8 -// JL rel32 func JL(r operand.Op) (*avo.Instruction, error) { switch { case operand.IsRel8(r): + return &avo.Instruction{ + Opcode: "JL", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil case operand.IsRel32(r): - case operand.IsRel8(r): - case operand.IsRel32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "JL", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil } - return &avo.Instruction{ - Opcode: "JL", - Operands: []operand.Op{r}, - IsBranch: true, - IsConditional: true, - }, nil + return nil, ErrBadOperandTypes } // JLE: Jump if less or equal (ZF == 1 or SF != OF). @@ -4508,23 +6687,28 @@ func JL(r operand.Op) (*avo.Instruction, error) { // // JLE rel8 // JLE rel32 -// JLE rel8 -// JLE rel32 func JLE(r operand.Op) (*avo.Instruction, error) { switch { case operand.IsRel8(r): + return &avo.Instruction{ + Opcode: "JLE", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil case operand.IsRel32(r): - case operand.IsRel8(r): - case operand.IsRel32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "JLE", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil } - return &avo.Instruction{ - Opcode: "JLE", - Operands: []operand.Op{r}, - IsBranch: true, - IsConditional: true, - }, nil + return nil, ErrBadOperandTypes } // JLO: Jump if below (CF == 1). @@ -4533,27 +6717,28 @@ func JLE(r operand.Op) (*avo.Instruction, error) { // // JLO rel8 // JLO rel32 -// JLO rel8 -// JLO rel32 -// JLO rel8 -// JLO rel32 func JLO(r operand.Op) (*avo.Instruction, error) { switch { case operand.IsRel8(r): + return &avo.Instruction{ + Opcode: "JLO", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil case operand.IsRel32(r): - case operand.IsRel8(r): - case operand.IsRel32(r): - case operand.IsRel8(r): - case operand.IsRel32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "JLO", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil } - return &avo.Instruction{ - Opcode: "JLO", - Operands: []operand.Op{r}, - IsBranch: true, - IsConditional: true, - }, nil + return nil, ErrBadOperandTypes } // JLS: Jump if below or equal (CF == 1 or ZF == 1). @@ -4562,23 +6747,28 @@ func JLO(r operand.Op) (*avo.Instruction, error) { // // JLS rel8 // JLS rel32 -// JLS rel8 -// JLS rel32 func JLS(r operand.Op) (*avo.Instruction, error) { switch { case operand.IsRel8(r): + return &avo.Instruction{ + Opcode: "JLS", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil case operand.IsRel32(r): - case operand.IsRel8(r): - case operand.IsRel32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "JLS", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil } - return &avo.Instruction{ - Opcode: "JLS", - Operands: []operand.Op{r}, - IsBranch: true, - IsConditional: true, - }, nil + return nil, ErrBadOperandTypes } // JLT: Jump if less (SF != OF). @@ -4587,23 +6777,28 @@ func JLS(r operand.Op) (*avo.Instruction, error) { // // JLT rel8 // JLT rel32 -// JLT rel8 -// JLT rel32 func JLT(r operand.Op) (*avo.Instruction, error) { switch { case operand.IsRel8(r): + return &avo.Instruction{ + Opcode: "JLT", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil case operand.IsRel32(r): - case operand.IsRel8(r): - case operand.IsRel32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "JLT", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil } - return &avo.Instruction{ - Opcode: "JLT", - Operands: []operand.Op{r}, - IsBranch: true, - IsConditional: true, - }, nil + return nil, ErrBadOperandTypes } // JMI: Jump if sign (SF == 1). @@ -4615,16 +6810,25 @@ func JLT(r operand.Op) (*avo.Instruction, error) { func JMI(r operand.Op) (*avo.Instruction, error) { switch { case operand.IsRel8(r): + return &avo.Instruction{ + Opcode: "JMI", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil case operand.IsRel32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "JMI", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil } - return &avo.Instruction{ - Opcode: "JMI", - Operands: []operand.Op{r}, - IsBranch: true, - IsConditional: true, - }, nil + return nil, ErrBadOperandTypes } // JMP: Jump Unconditionally. @@ -4638,18 +6842,43 @@ func JMI(r operand.Op) (*avo.Instruction, error) { func JMP(mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsRel8(mr): + return &avo.Instruction{ + Opcode: "JMP", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: false, + }, nil case operand.IsRel32(mr): + return &avo.Instruction{ + Opcode: "JMP", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: false, + }, nil case operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "JMP", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: false, + }, nil case operand.IsM64(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "JMP", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: false, + }, nil } - return &avo.Instruction{ - Opcode: "JMP", - Operands: []operand.Op{mr}, - IsBranch: true, - IsConditional: false, - }, nil + return nil, ErrBadOperandTypes } // JNA: Jump if below or equal (CF == 1 or ZF == 1). @@ -4658,23 +6887,28 @@ func JMP(mr operand.Op) (*avo.Instruction, error) { // // JNA rel8 // JNA rel32 -// JNA rel8 -// JNA rel32 func JNA(r operand.Op) (*avo.Instruction, error) { switch { case operand.IsRel8(r): + return &avo.Instruction{ + Opcode: "JNA", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil case operand.IsRel32(r): - case operand.IsRel8(r): - case operand.IsRel32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "JNA", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil } - return &avo.Instruction{ - Opcode: "JNA", - Operands: []operand.Op{r}, - IsBranch: true, - IsConditional: true, - }, nil + return nil, ErrBadOperandTypes } // JNAE: Jump if below (CF == 1). @@ -4683,27 +6917,28 @@ func JNA(r operand.Op) (*avo.Instruction, error) { // // JNAE rel8 // JNAE rel32 -// JNAE rel8 -// JNAE rel32 -// JNAE rel8 -// JNAE rel32 func JNAE(r operand.Op) (*avo.Instruction, error) { switch { case operand.IsRel8(r): + return &avo.Instruction{ + Opcode: "JNAE", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil case operand.IsRel32(r): - case operand.IsRel8(r): - case operand.IsRel32(r): - case operand.IsRel8(r): - case operand.IsRel32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "JNAE", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil } - return &avo.Instruction{ - Opcode: "JNAE", - Operands: []operand.Op{r}, - IsBranch: true, - IsConditional: true, - }, nil + return nil, ErrBadOperandTypes } // JNB: Jump if above or equal (CF == 0). @@ -4712,27 +6947,28 @@ func JNAE(r operand.Op) (*avo.Instruction, error) { // // JNB rel8 // JNB rel32 -// JNB rel8 -// JNB rel32 -// JNB rel8 -// JNB rel32 func JNB(r operand.Op) (*avo.Instruction, error) { switch { case operand.IsRel8(r): + return &avo.Instruction{ + Opcode: "JNB", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil case operand.IsRel32(r): - case operand.IsRel8(r): - case operand.IsRel32(r): - case operand.IsRel8(r): - case operand.IsRel32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "JNB", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil } - return &avo.Instruction{ - Opcode: "JNB", - Operands: []operand.Op{r}, - IsBranch: true, - IsConditional: true, - }, nil + return nil, ErrBadOperandTypes } // JNBE: Jump if above (CF == 0 and ZF == 0). @@ -4741,23 +6977,28 @@ func JNB(r operand.Op) (*avo.Instruction, error) { // // JNBE rel8 // JNBE rel32 -// JNBE rel8 -// JNBE rel32 func JNBE(r operand.Op) (*avo.Instruction, error) { switch { case operand.IsRel8(r): + return &avo.Instruction{ + Opcode: "JNBE", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil case operand.IsRel32(r): - case operand.IsRel8(r): - case operand.IsRel32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "JNBE", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil } - return &avo.Instruction{ - Opcode: "JNBE", - Operands: []operand.Op{r}, - IsBranch: true, - IsConditional: true, - }, nil + return nil, ErrBadOperandTypes } // JNC: Jump if above or equal (CF == 0). @@ -4766,27 +7007,28 @@ func JNBE(r operand.Op) (*avo.Instruction, error) { // // JNC rel8 // JNC rel32 -// JNC rel8 -// JNC rel32 -// JNC rel8 -// JNC rel32 func JNC(r operand.Op) (*avo.Instruction, error) { switch { case operand.IsRel8(r): + return &avo.Instruction{ + Opcode: "JNC", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil case operand.IsRel32(r): - case operand.IsRel8(r): - case operand.IsRel32(r): - case operand.IsRel8(r): - case operand.IsRel32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "JNC", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil } - return &avo.Instruction{ - Opcode: "JNC", - Operands: []operand.Op{r}, - IsBranch: true, - IsConditional: true, - }, nil + return nil, ErrBadOperandTypes } // JNE: Jump if not equal (ZF == 0). @@ -4795,23 +7037,28 @@ func JNC(r operand.Op) (*avo.Instruction, error) { // // JNE rel8 // JNE rel32 -// JNE rel8 -// JNE rel32 func JNE(r operand.Op) (*avo.Instruction, error) { switch { case operand.IsRel8(r): + return &avo.Instruction{ + Opcode: "JNE", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil case operand.IsRel32(r): - case operand.IsRel8(r): - case operand.IsRel32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "JNE", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil } - return &avo.Instruction{ - Opcode: "JNE", - Operands: []operand.Op{r}, - IsBranch: true, - IsConditional: true, - }, nil + return nil, ErrBadOperandTypes } // JNG: Jump if less or equal (ZF == 1 or SF != OF). @@ -4820,23 +7067,28 @@ func JNE(r operand.Op) (*avo.Instruction, error) { // // JNG rel8 // JNG rel32 -// JNG rel8 -// JNG rel32 func JNG(r operand.Op) (*avo.Instruction, error) { switch { case operand.IsRel8(r): + return &avo.Instruction{ + Opcode: "JNG", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil case operand.IsRel32(r): - case operand.IsRel8(r): - case operand.IsRel32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "JNG", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil } - return &avo.Instruction{ - Opcode: "JNG", - Operands: []operand.Op{r}, - IsBranch: true, - IsConditional: true, - }, nil + return nil, ErrBadOperandTypes } // JNGE: Jump if less (SF != OF). @@ -4845,23 +7097,28 @@ func JNG(r operand.Op) (*avo.Instruction, error) { // // JNGE rel8 // JNGE rel32 -// JNGE rel8 -// JNGE rel32 func JNGE(r operand.Op) (*avo.Instruction, error) { switch { case operand.IsRel8(r): + return &avo.Instruction{ + Opcode: "JNGE", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil case operand.IsRel32(r): - case operand.IsRel8(r): - case operand.IsRel32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "JNGE", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil } - return &avo.Instruction{ - Opcode: "JNGE", - Operands: []operand.Op{r}, - IsBranch: true, - IsConditional: true, - }, nil + return nil, ErrBadOperandTypes } // JNL: Jump if greater or equal (SF == OF). @@ -4870,23 +7127,28 @@ func JNGE(r operand.Op) (*avo.Instruction, error) { // // JNL rel8 // JNL rel32 -// JNL rel8 -// JNL rel32 func JNL(r operand.Op) (*avo.Instruction, error) { switch { case operand.IsRel8(r): + return &avo.Instruction{ + Opcode: "JNL", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil case operand.IsRel32(r): - case operand.IsRel8(r): - case operand.IsRel32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "JNL", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil } - return &avo.Instruction{ - Opcode: "JNL", - Operands: []operand.Op{r}, - IsBranch: true, - IsConditional: true, - }, nil + return nil, ErrBadOperandTypes } // JNLE: Jump if greater (ZF == 0 and SF == OF). @@ -4895,23 +7157,28 @@ func JNL(r operand.Op) (*avo.Instruction, error) { // // JNLE rel8 // JNLE rel32 -// JNLE rel8 -// JNLE rel32 func JNLE(r operand.Op) (*avo.Instruction, error) { switch { case operand.IsRel8(r): + return &avo.Instruction{ + Opcode: "JNLE", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil case operand.IsRel32(r): - case operand.IsRel8(r): - case operand.IsRel32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "JNLE", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil } - return &avo.Instruction{ - Opcode: "JNLE", - Operands: []operand.Op{r}, - IsBranch: true, - IsConditional: true, - }, nil + return nil, ErrBadOperandTypes } // JNO: Jump if not overflow (OF == 0). @@ -4923,16 +7190,25 @@ func JNLE(r operand.Op) (*avo.Instruction, error) { func JNO(r operand.Op) (*avo.Instruction, error) { switch { case operand.IsRel8(r): + return &avo.Instruction{ + Opcode: "JNO", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil case operand.IsRel32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "JNO", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil } - return &avo.Instruction{ - Opcode: "JNO", - Operands: []operand.Op{r}, - IsBranch: true, - IsConditional: true, - }, nil + return nil, ErrBadOperandTypes } // JNP: Jump if not parity (PF == 0). @@ -4941,23 +7217,28 @@ func JNO(r operand.Op) (*avo.Instruction, error) { // // JNP rel8 // JNP rel32 -// JNP rel8 -// JNP rel32 func JNP(r operand.Op) (*avo.Instruction, error) { switch { case operand.IsRel8(r): + return &avo.Instruction{ + Opcode: "JNP", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil case operand.IsRel32(r): - case operand.IsRel8(r): - case operand.IsRel32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "JNP", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil } - return &avo.Instruction{ - Opcode: "JNP", - Operands: []operand.Op{r}, - IsBranch: true, - IsConditional: true, - }, nil + return nil, ErrBadOperandTypes } // JNS: Jump if not sign (SF == 0). @@ -4969,16 +7250,25 @@ func JNP(r operand.Op) (*avo.Instruction, error) { func JNS(r operand.Op) (*avo.Instruction, error) { switch { case operand.IsRel8(r): + return &avo.Instruction{ + Opcode: "JNS", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil case operand.IsRel32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "JNS", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil } - return &avo.Instruction{ - Opcode: "JNS", - Operands: []operand.Op{r}, - IsBranch: true, - IsConditional: true, - }, nil + return nil, ErrBadOperandTypes } // JNZ: Jump if not equal (ZF == 0). @@ -4987,23 +7277,28 @@ func JNS(r operand.Op) (*avo.Instruction, error) { // // JNZ rel8 // JNZ rel32 -// JNZ rel8 -// JNZ rel32 func JNZ(r operand.Op) (*avo.Instruction, error) { switch { case operand.IsRel8(r): + return &avo.Instruction{ + Opcode: "JNZ", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil case operand.IsRel32(r): - case operand.IsRel8(r): - case operand.IsRel32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "JNZ", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil } - return &avo.Instruction{ - Opcode: "JNZ", - Operands: []operand.Op{r}, - IsBranch: true, - IsConditional: true, - }, nil + return nil, ErrBadOperandTypes } // JO: Jump if overflow (OF == 1). @@ -5015,16 +7310,25 @@ func JNZ(r operand.Op) (*avo.Instruction, error) { func JO(r operand.Op) (*avo.Instruction, error) { switch { case operand.IsRel8(r): + return &avo.Instruction{ + Opcode: "JO", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil case operand.IsRel32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "JO", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil } - return &avo.Instruction{ - Opcode: "JO", - Operands: []operand.Op{r}, - IsBranch: true, - IsConditional: true, - }, nil + return nil, ErrBadOperandTypes } // JOC: Jump if not overflow (OF == 0). @@ -5036,16 +7340,25 @@ func JO(r operand.Op) (*avo.Instruction, error) { func JOC(r operand.Op) (*avo.Instruction, error) { switch { case operand.IsRel8(r): + return &avo.Instruction{ + Opcode: "JOC", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil case operand.IsRel32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "JOC", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil } - return &avo.Instruction{ - Opcode: "JOC", - Operands: []operand.Op{r}, - IsBranch: true, - IsConditional: true, - }, nil + return nil, ErrBadOperandTypes } // JOS: Jump if overflow (OF == 1). @@ -5057,16 +7370,25 @@ func JOC(r operand.Op) (*avo.Instruction, error) { func JOS(r operand.Op) (*avo.Instruction, error) { switch { case operand.IsRel8(r): + return &avo.Instruction{ + Opcode: "JOS", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil case operand.IsRel32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "JOS", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil } - return &avo.Instruction{ - Opcode: "JOS", - Operands: []operand.Op{r}, - IsBranch: true, - IsConditional: true, - }, nil + return nil, ErrBadOperandTypes } // JP: Jump if parity (PF == 1). @@ -5075,23 +7397,28 @@ func JOS(r operand.Op) (*avo.Instruction, error) { // // JP rel8 // JP rel32 -// JP rel8 -// JP rel32 func JP(r operand.Op) (*avo.Instruction, error) { switch { case operand.IsRel8(r): + return &avo.Instruction{ + Opcode: "JP", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil case operand.IsRel32(r): - case operand.IsRel8(r): - case operand.IsRel32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "JP", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil } - return &avo.Instruction{ - Opcode: "JP", - Operands: []operand.Op{r}, - IsBranch: true, - IsConditional: true, - }, nil + return nil, ErrBadOperandTypes } // JPC: Jump if not parity (PF == 0). @@ -5100,23 +7427,28 @@ func JP(r operand.Op) (*avo.Instruction, error) { // // JPC rel8 // JPC rel32 -// JPC rel8 -// JPC rel32 func JPC(r operand.Op) (*avo.Instruction, error) { switch { case operand.IsRel8(r): + return &avo.Instruction{ + Opcode: "JPC", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil case operand.IsRel32(r): - case operand.IsRel8(r): - case operand.IsRel32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "JPC", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil } - return &avo.Instruction{ - Opcode: "JPC", - Operands: []operand.Op{r}, - IsBranch: true, - IsConditional: true, - }, nil + return nil, ErrBadOperandTypes } // JPE: Jump if parity (PF == 1). @@ -5125,23 +7457,28 @@ func JPC(r operand.Op) (*avo.Instruction, error) { // // JPE rel8 // JPE rel32 -// JPE rel8 -// JPE rel32 func JPE(r operand.Op) (*avo.Instruction, error) { switch { case operand.IsRel8(r): + return &avo.Instruction{ + Opcode: "JPE", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil case operand.IsRel32(r): - case operand.IsRel8(r): - case operand.IsRel32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "JPE", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil } - return &avo.Instruction{ - Opcode: "JPE", - Operands: []operand.Op{r}, - IsBranch: true, - IsConditional: true, - }, nil + return nil, ErrBadOperandTypes } // JPL: Jump if not sign (SF == 0). @@ -5153,16 +7490,25 @@ func JPE(r operand.Op) (*avo.Instruction, error) { func JPL(r operand.Op) (*avo.Instruction, error) { switch { case operand.IsRel8(r): + return &avo.Instruction{ + Opcode: "JPL", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil case operand.IsRel32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "JPL", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil } - return &avo.Instruction{ - Opcode: "JPL", - Operands: []operand.Op{r}, - IsBranch: true, - IsConditional: true, - }, nil + return nil, ErrBadOperandTypes } // JPO: Jump if not parity (PF == 0). @@ -5171,23 +7517,28 @@ func JPL(r operand.Op) (*avo.Instruction, error) { // // JPO rel8 // JPO rel32 -// JPO rel8 -// JPO rel32 func JPO(r operand.Op) (*avo.Instruction, error) { switch { case operand.IsRel8(r): + return &avo.Instruction{ + Opcode: "JPO", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil case operand.IsRel32(r): - case operand.IsRel8(r): - case operand.IsRel32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "JPO", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil } - return &avo.Instruction{ - Opcode: "JPO", - Operands: []operand.Op{r}, - IsBranch: true, - IsConditional: true, - }, nil + return nil, ErrBadOperandTypes } // JPS: Jump if parity (PF == 1). @@ -5196,23 +7547,28 @@ func JPO(r operand.Op) (*avo.Instruction, error) { // // JPS rel8 // JPS rel32 -// JPS rel8 -// JPS rel32 func JPS(r operand.Op) (*avo.Instruction, error) { switch { case operand.IsRel8(r): + return &avo.Instruction{ + Opcode: "JPS", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil case operand.IsRel32(r): - case operand.IsRel8(r): - case operand.IsRel32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "JPS", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil } - return &avo.Instruction{ - Opcode: "JPS", - Operands: []operand.Op{r}, - IsBranch: true, - IsConditional: true, - }, nil + return nil, ErrBadOperandTypes } // JS: Jump if sign (SF == 1). @@ -5224,16 +7580,25 @@ func JPS(r operand.Op) (*avo.Instruction, error) { func JS(r operand.Op) (*avo.Instruction, error) { switch { case operand.IsRel8(r): + return &avo.Instruction{ + Opcode: "JS", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil case operand.IsRel32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "JS", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil } - return &avo.Instruction{ - Opcode: "JS", - Operands: []operand.Op{r}, - IsBranch: true, - IsConditional: true, - }, nil + return nil, ErrBadOperandTypes } // JZ: Jump if equal (ZF == 1). @@ -5242,23 +7607,28 @@ func JS(r operand.Op) (*avo.Instruction, error) { // // JZ rel8 // JZ rel32 -// JZ rel8 -// JZ rel32 func JZ(r operand.Op) (*avo.Instruction, error) { switch { case operand.IsRel8(r): + return &avo.Instruction{ + Opcode: "JZ", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil case operand.IsRel32(r): - case operand.IsRel8(r): - case operand.IsRel32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "JZ", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + IsBranch: true, + IsConditional: true, + }, nil } - return &avo.Instruction{ - Opcode: "JZ", - Operands: []operand.Op{r}, - IsBranch: true, - IsConditional: true, - }, nil + return nil, ErrBadOperandTypes } // LDDQU: Load Unaligned Integer 128 Bits. @@ -5269,13 +7639,14 @@ func JZ(r operand.Op) (*avo.Instruction, error) { func LDDQU(m, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsM128(m) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "LDDQU", + Operands: []operand.Op{m, x}, + Inputs: []operand.Op{m}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "LDDQU", - Operands: []operand.Op{m, x}, - }, nil + return nil, ErrBadOperandTypes } // LDMXCSR: Load MXCSR Register. @@ -5286,13 +7657,14 @@ func LDDQU(m, x operand.Op) (*avo.Instruction, error) { func LDMXCSR(m operand.Op) (*avo.Instruction, error) { switch { case operand.IsM32(m): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "LDMXCSR", + Operands: []operand.Op{m}, + Inputs: []operand.Op{m}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "LDMXCSR", - Operands: []operand.Op{m}, - }, nil + return nil, ErrBadOperandTypes } // LEAL: Load Effective Address. @@ -5303,13 +7675,14 @@ func LDMXCSR(m operand.Op) (*avo.Instruction, error) { func LEAL(m, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsM(m) && operand.IsR32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "LEAL", + Operands: []operand.Op{m, r}, + Inputs: []operand.Op{m}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "LEAL", - Operands: []operand.Op{m, r}, - }, nil + return nil, ErrBadOperandTypes } // LEAQ: Load Effective Address. @@ -5320,13 +7693,14 @@ func LEAL(m, r operand.Op) (*avo.Instruction, error) { func LEAQ(m, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsM(m) && operand.IsR64(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "LEAQ", + Operands: []operand.Op{m, r}, + Inputs: []operand.Op{m}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "LEAQ", - Operands: []operand.Op{m, r}, - }, nil + return nil, ErrBadOperandTypes } // LEAW: Load Effective Address. @@ -5337,13 +7711,14 @@ func LEAQ(m, r operand.Op) (*avo.Instruction, error) { func LEAW(m, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsM(m) && operand.IsR16(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "LEAW", + Operands: []operand.Op{m, r}, + Inputs: []operand.Op{m}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "LEAW", - Operands: []operand.Op{m, r}, - }, nil + return nil, ErrBadOperandTypes } // LFENCE: Load Fence. @@ -5355,6 +7730,8 @@ func LFENCE() (*avo.Instruction, error) { return &avo.Instruction{ Opcode: "LFENCE", Operands: nil, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, }, nil } @@ -5367,14 +7744,21 @@ func LFENCE() (*avo.Instruction, error) { func LZCNTL(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR32(mr) && operand.IsR32(r): + return &avo.Instruction{ + Opcode: "LZCNTL", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM32(mr) && operand.IsR32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "LZCNTL", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "LZCNTL", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // LZCNTQ: Count the Number of Leading Zero Bits. @@ -5386,14 +7770,21 @@ func LZCNTL(mr, r operand.Op) (*avo.Instruction, error) { func LZCNTQ(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR64(mr) && operand.IsR64(r): + return &avo.Instruction{ + Opcode: "LZCNTQ", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM64(mr) && operand.IsR64(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "LZCNTQ", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "LZCNTQ", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // LZCNTW: Count the Number of Leading Zero Bits. @@ -5405,14 +7796,21 @@ func LZCNTQ(mr, r operand.Op) (*avo.Instruction, error) { func LZCNTW(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR16(mr) && operand.IsR16(r): + return &avo.Instruction{ + Opcode: "LZCNTW", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM16(mr) && operand.IsR16(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "LZCNTW", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "LZCNTW", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // MASKMOVDQU: Store Selected Bytes of Double Quadword. @@ -5423,13 +7821,14 @@ func LZCNTW(mr, r operand.Op) (*avo.Instruction, error) { func MASKMOVDQU(x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MASKMOVDQU", + Operands: []operand.Op{x, x1}, + Inputs: []operand.Op{x, x1}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "MASKMOVDQU", - Operands: []operand.Op{x, x1}, - }, nil + return nil, ErrBadOperandTypes } // MASKMOVOU: Store Selected Bytes of Double Quadword. @@ -5440,13 +7839,14 @@ func MASKMOVDQU(x, x1 operand.Op) (*avo.Instruction, error) { func MASKMOVOU(x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MASKMOVOU", + Operands: []operand.Op{x, x1}, + Inputs: []operand.Op{x, x1}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "MASKMOVOU", - Operands: []operand.Op{x, x1}, - }, nil + return nil, ErrBadOperandTypes } // MAXPD: Return Maximum Packed Double-Precision Floating-Point Values. @@ -5458,14 +7858,21 @@ func MASKMOVOU(x, x1 operand.Op) (*avo.Instruction, error) { func MAXPD(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "MAXPD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MAXPD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "MAXPD", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // MAXPS: Return Maximum Packed Single-Precision Floating-Point Values. @@ -5477,14 +7884,21 @@ func MAXPD(mx, x operand.Op) (*avo.Instruction, error) { func MAXPS(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "MAXPS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MAXPS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "MAXPS", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // MAXSD: Return Maximum Scalar Double-Precision Floating-Point Value. @@ -5496,14 +7910,21 @@ func MAXPS(mx, x operand.Op) (*avo.Instruction, error) { func MAXSD(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "MAXSD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM64(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MAXSD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "MAXSD", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // MAXSS: Return Maximum Scalar Single-Precision Floating-Point Value. @@ -5515,14 +7936,21 @@ func MAXSD(mx, x operand.Op) (*avo.Instruction, error) { func MAXSS(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "MAXSS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM32(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MAXSS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "MAXSS", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // MFENCE: Memory Fence. @@ -5534,6 +7962,8 @@ func MFENCE() (*avo.Instruction, error) { return &avo.Instruction{ Opcode: "MFENCE", Operands: nil, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, }, nil } @@ -5546,14 +7976,21 @@ func MFENCE() (*avo.Instruction, error) { func MINPD(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "MINPD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MINPD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "MINPD", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // MINPS: Return Minimum Packed Single-Precision Floating-Point Values. @@ -5565,14 +8002,21 @@ func MINPD(mx, x operand.Op) (*avo.Instruction, error) { func MINPS(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "MINPS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MINPS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "MINPS", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // MINSD: Return Minimum Scalar Double-Precision Floating-Point Value. @@ -5584,14 +8028,21 @@ func MINPS(mx, x operand.Op) (*avo.Instruction, error) { func MINSD(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "MINSD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM64(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MINSD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "MINSD", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // MINSS: Return Minimum Scalar Single-Precision Floating-Point Value. @@ -5603,14 +8054,21 @@ func MINSD(mx, x operand.Op) (*avo.Instruction, error) { func MINSS(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "MINSS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM32(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MINSS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "MINSS", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // MONITOR: Monitor a Linear Address Range. @@ -5622,6 +8080,8 @@ func MONITOR() (*avo.Instruction, error) { return &avo.Instruction{ Opcode: "MONITOR", Operands: nil, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, }, nil } @@ -5635,15 +8095,28 @@ func MONITOR() (*avo.Instruction, error) { func MOVAPD(mx, mx1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(mx1): + return &avo.Instruction{ + Opcode: "MOVAPD", + Operands: []operand.Op{mx, mx1}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{mx1}, + }, nil case operand.IsM128(mx) && operand.IsXmm(mx1): + return &avo.Instruction{ + Opcode: "MOVAPD", + Operands: []operand.Op{mx, mx1}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{mx1}, + }, nil case operand.IsXmm(mx) && operand.IsM128(mx1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MOVAPD", + Operands: []operand.Op{mx, mx1}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{mx1}, + }, nil } - return &avo.Instruction{ - Opcode: "MOVAPD", - Operands: []operand.Op{mx, mx1}, - }, nil + return nil, ErrBadOperandTypes } // MOVAPS: Move Aligned Packed Single-Precision Floating-Point Values. @@ -5656,15 +8129,28 @@ func MOVAPD(mx, mx1 operand.Op) (*avo.Instruction, error) { func MOVAPS(mx, mx1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(mx1): + return &avo.Instruction{ + Opcode: "MOVAPS", + Operands: []operand.Op{mx, mx1}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{mx1}, + }, nil case operand.IsM128(mx) && operand.IsXmm(mx1): + return &avo.Instruction{ + Opcode: "MOVAPS", + Operands: []operand.Op{mx, mx1}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{mx1}, + }, nil case operand.IsXmm(mx) && operand.IsM128(mx1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MOVAPS", + Operands: []operand.Op{mx, mx1}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{mx1}, + }, nil } - return &avo.Instruction{ - Opcode: "MOVAPS", - Operands: []operand.Op{mx, mx1}, - }, nil + return nil, ErrBadOperandTypes } // MOVB: Move. @@ -5679,17 +8165,42 @@ func MOVAPS(mx, mx1 operand.Op) (*avo.Instruction, error) { func MOVB(imr, mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(imr) && operand.IsR8(mr): + return &avo.Instruction{ + Opcode: "MOVB", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsR8(imr) && operand.IsR8(mr): + return &avo.Instruction{ + Opcode: "MOVB", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{imr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsM8(imr) && operand.IsR8(mr): + return &avo.Instruction{ + Opcode: "MOVB", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{imr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(imr) && operand.IsM8(mr): + return &avo.Instruction{ + Opcode: "MOVB", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsR8(imr) && operand.IsM8(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MOVB", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{imr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "MOVB", - Operands: []operand.Op{imr, mr}, - }, nil + return nil, ErrBadOperandTypes } // MOVBELL: Move Data After Swapping Bytes. @@ -5701,14 +8212,21 @@ func MOVB(imr, mr operand.Op) (*avo.Instruction, error) { func MOVBELL(mr, mr1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsM32(mr) && operand.IsR32(mr1): + return &avo.Instruction{ + Opcode: "MOVBELL", + Operands: []operand.Op{mr, mr1}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr1}, + }, nil case operand.IsR32(mr) && operand.IsM32(mr1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MOVBELL", + Operands: []operand.Op{mr, mr1}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr1}, + }, nil } - return &avo.Instruction{ - Opcode: "MOVBELL", - Operands: []operand.Op{mr, mr1}, - }, nil + return nil, ErrBadOperandTypes } // MOVBEQQ: Move Data After Swapping Bytes. @@ -5720,14 +8238,21 @@ func MOVBELL(mr, mr1 operand.Op) (*avo.Instruction, error) { func MOVBEQQ(mr, mr1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsM64(mr) && operand.IsR64(mr1): + return &avo.Instruction{ + Opcode: "MOVBEQQ", + Operands: []operand.Op{mr, mr1}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr1}, + }, nil case operand.IsR64(mr) && operand.IsM64(mr1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MOVBEQQ", + Operands: []operand.Op{mr, mr1}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr1}, + }, nil } - return &avo.Instruction{ - Opcode: "MOVBEQQ", - Operands: []operand.Op{mr, mr1}, - }, nil + return nil, ErrBadOperandTypes } // MOVBEWW: Move Data After Swapping Bytes. @@ -5739,14 +8264,21 @@ func MOVBEQQ(mr, mr1 operand.Op) (*avo.Instruction, error) { func MOVBEWW(mr, mr1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsM16(mr) && operand.IsR16(mr1): + return &avo.Instruction{ + Opcode: "MOVBEWW", + Operands: []operand.Op{mr, mr1}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr1}, + }, nil case operand.IsR16(mr) && operand.IsM16(mr1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MOVBEWW", + Operands: []operand.Op{mr, mr1}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr1}, + }, nil } - return &avo.Instruction{ - Opcode: "MOVBEWW", - Operands: []operand.Op{mr, mr1}, - }, nil + return nil, ErrBadOperandTypes } // MOVBLSX: Move with Sign-Extension. @@ -5758,14 +8290,21 @@ func MOVBEWW(mr, mr1 operand.Op) (*avo.Instruction, error) { func MOVBLSX(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR8(mr) && operand.IsR32(r): + return &avo.Instruction{ + Opcode: "MOVBLSX", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM8(mr) && operand.IsR32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MOVBLSX", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "MOVBLSX", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // MOVBLZX: Move with Zero-Extend. @@ -5777,14 +8316,21 @@ func MOVBLSX(mr, r operand.Op) (*avo.Instruction, error) { func MOVBLZX(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR8(mr) && operand.IsR32(r): + return &avo.Instruction{ + Opcode: "MOVBLZX", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM8(mr) && operand.IsR32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MOVBLZX", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "MOVBLZX", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // MOVBQSX: Move with Sign-Extension. @@ -5796,14 +8342,21 @@ func MOVBLZX(mr, r operand.Op) (*avo.Instruction, error) { func MOVBQSX(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR8(mr) && operand.IsR64(r): + return &avo.Instruction{ + Opcode: "MOVBQSX", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM8(mr) && operand.IsR64(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MOVBQSX", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "MOVBQSX", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // MOVBQZX: Move with Zero-Extend. @@ -5815,14 +8368,21 @@ func MOVBQSX(mr, r operand.Op) (*avo.Instruction, error) { func MOVBQZX(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR8(mr) && operand.IsR64(r): + return &avo.Instruction{ + Opcode: "MOVBQZX", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM8(mr) && operand.IsR64(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MOVBQZX", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "MOVBQZX", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // MOVBWSX: Move with Sign-Extension. @@ -5834,14 +8394,21 @@ func MOVBQZX(mr, r operand.Op) (*avo.Instruction, error) { func MOVBWSX(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR8(mr) && operand.IsR16(r): + return &avo.Instruction{ + Opcode: "MOVBWSX", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM8(mr) && operand.IsR16(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MOVBWSX", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "MOVBWSX", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // MOVBWZX: Move with Zero-Extend. @@ -5853,14 +8420,21 @@ func MOVBWSX(mr, r operand.Op) (*avo.Instruction, error) { func MOVBWZX(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR8(mr) && operand.IsR16(r): + return &avo.Instruction{ + Opcode: "MOVBWZX", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM8(mr) && operand.IsR16(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MOVBWZX", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "MOVBWZX", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // MOVD: Move. @@ -5881,23 +8455,84 @@ func MOVBWZX(mr, r operand.Op) (*avo.Instruction, error) { func MOVD(imrx, mrx operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm32(imrx) && operand.IsR64(mrx): + return &avo.Instruction{ + Opcode: "MOVD", + Operands: []operand.Op{imrx, mrx}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{mrx}, + }, nil case operand.IsImm64(imrx) && operand.IsR64(mrx): + return &avo.Instruction{ + Opcode: "MOVD", + Operands: []operand.Op{imrx, mrx}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{mrx}, + }, nil case operand.IsR64(imrx) && operand.IsR64(mrx): + return &avo.Instruction{ + Opcode: "MOVD", + Operands: []operand.Op{imrx, mrx}, + Inputs: []operand.Op{imrx}, + Outputs: []operand.Op{mrx}, + }, nil case operand.IsM64(imrx) && operand.IsR64(mrx): + return &avo.Instruction{ + Opcode: "MOVD", + Operands: []operand.Op{imrx, mrx}, + Inputs: []operand.Op{imrx}, + Outputs: []operand.Op{mrx}, + }, nil case operand.IsImm32(imrx) && operand.IsM64(mrx): + return &avo.Instruction{ + Opcode: "MOVD", + Operands: []operand.Op{imrx, mrx}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{mrx}, + }, nil case operand.IsR64(imrx) && operand.IsM64(mrx): + return &avo.Instruction{ + Opcode: "MOVD", + Operands: []operand.Op{imrx, mrx}, + Inputs: []operand.Op{imrx}, + Outputs: []operand.Op{mrx}, + }, nil case operand.IsXmm(imrx) && operand.IsR64(mrx): + return &avo.Instruction{ + Opcode: "MOVD", + Operands: []operand.Op{imrx, mrx}, + Inputs: []operand.Op{imrx}, + Outputs: []operand.Op{mrx}, + }, nil case operand.IsR64(imrx) && operand.IsXmm(mrx): + return &avo.Instruction{ + Opcode: "MOVD", + Operands: []operand.Op{imrx, mrx}, + Inputs: []operand.Op{imrx}, + Outputs: []operand.Op{mrx}, + }, nil case operand.IsXmm(imrx) && operand.IsXmm(mrx): + return &avo.Instruction{ + Opcode: "MOVD", + Operands: []operand.Op{imrx, mrx}, + Inputs: []operand.Op{imrx}, + Outputs: []operand.Op{mrx}, + }, nil case operand.IsM64(imrx) && operand.IsXmm(mrx): + return &avo.Instruction{ + Opcode: "MOVD", + Operands: []operand.Op{imrx, mrx}, + Inputs: []operand.Op{imrx}, + Outputs: []operand.Op{mrx}, + }, nil case operand.IsXmm(imrx) && operand.IsM64(mrx): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MOVD", + Operands: []operand.Op{imrx, mrx}, + Inputs: []operand.Op{imrx}, + Outputs: []operand.Op{mrx}, + }, nil } - return &avo.Instruction{ - Opcode: "MOVD", - Operands: []operand.Op{imrx, mrx}, - }, nil + return nil, ErrBadOperandTypes } // MOVDDUP: Move One Double-FP and Duplicate. @@ -5909,14 +8544,21 @@ func MOVD(imrx, mrx operand.Op) (*avo.Instruction, error) { func MOVDDUP(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "MOVDDUP", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM64(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MOVDDUP", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "MOVDDUP", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // MOVDQ2Q: Move. @@ -5937,23 +8579,84 @@ func MOVDDUP(mx, x operand.Op) (*avo.Instruction, error) { func MOVDQ2Q(imrx, mrx operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm32(imrx) && operand.IsR64(mrx): + return &avo.Instruction{ + Opcode: "MOVDQ2Q", + Operands: []operand.Op{imrx, mrx}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{mrx}, + }, nil case operand.IsImm64(imrx) && operand.IsR64(mrx): + return &avo.Instruction{ + Opcode: "MOVDQ2Q", + Operands: []operand.Op{imrx, mrx}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{mrx}, + }, nil case operand.IsR64(imrx) && operand.IsR64(mrx): + return &avo.Instruction{ + Opcode: "MOVDQ2Q", + Operands: []operand.Op{imrx, mrx}, + Inputs: []operand.Op{imrx}, + Outputs: []operand.Op{mrx}, + }, nil case operand.IsM64(imrx) && operand.IsR64(mrx): + return &avo.Instruction{ + Opcode: "MOVDQ2Q", + Operands: []operand.Op{imrx, mrx}, + Inputs: []operand.Op{imrx}, + Outputs: []operand.Op{mrx}, + }, nil case operand.IsImm32(imrx) && operand.IsM64(mrx): + return &avo.Instruction{ + Opcode: "MOVDQ2Q", + Operands: []operand.Op{imrx, mrx}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{mrx}, + }, nil case operand.IsR64(imrx) && operand.IsM64(mrx): + return &avo.Instruction{ + Opcode: "MOVDQ2Q", + Operands: []operand.Op{imrx, mrx}, + Inputs: []operand.Op{imrx}, + Outputs: []operand.Op{mrx}, + }, nil case operand.IsXmm(imrx) && operand.IsR64(mrx): + return &avo.Instruction{ + Opcode: "MOVDQ2Q", + Operands: []operand.Op{imrx, mrx}, + Inputs: []operand.Op{imrx}, + Outputs: []operand.Op{mrx}, + }, nil case operand.IsR64(imrx) && operand.IsXmm(mrx): + return &avo.Instruction{ + Opcode: "MOVDQ2Q", + Operands: []operand.Op{imrx, mrx}, + Inputs: []operand.Op{imrx}, + Outputs: []operand.Op{mrx}, + }, nil case operand.IsXmm(imrx) && operand.IsXmm(mrx): + return &avo.Instruction{ + Opcode: "MOVDQ2Q", + Operands: []operand.Op{imrx, mrx}, + Inputs: []operand.Op{imrx}, + Outputs: []operand.Op{mrx}, + }, nil case operand.IsM64(imrx) && operand.IsXmm(mrx): + return &avo.Instruction{ + Opcode: "MOVDQ2Q", + Operands: []operand.Op{imrx, mrx}, + Inputs: []operand.Op{imrx}, + Outputs: []operand.Op{mrx}, + }, nil case operand.IsXmm(imrx) && operand.IsM64(mrx): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MOVDQ2Q", + Operands: []operand.Op{imrx, mrx}, + Inputs: []operand.Op{imrx}, + Outputs: []operand.Op{mrx}, + }, nil } - return &avo.Instruction{ - Opcode: "MOVDQ2Q", - Operands: []operand.Op{imrx, mrx}, - }, nil + return nil, ErrBadOperandTypes } // MOVHLPS: Move Packed Single-Precision Floating-Point Values High to Low. @@ -5964,13 +8667,14 @@ func MOVDQ2Q(imrx, mrx operand.Op) (*avo.Instruction, error) { func MOVHLPS(x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MOVHLPS", + Operands: []operand.Op{x, x1}, + Inputs: []operand.Op{x, x1}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "MOVHLPS", - Operands: []operand.Op{x, x1}, - }, nil + return nil, ErrBadOperandTypes } // MOVHPD: Move High Packed Double-Precision Floating-Point Value. @@ -5982,14 +8686,21 @@ func MOVHLPS(x, x1 operand.Op) (*avo.Instruction, error) { func MOVHPD(mx, mx1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsM64(mx) && operand.IsXmm(mx1): + return &avo.Instruction{ + Opcode: "MOVHPD", + Operands: []operand.Op{mx, mx1}, + Inputs: []operand.Op{mx, mx1}, + Outputs: []operand.Op{mx1}, + }, nil case operand.IsXmm(mx) && operand.IsM64(mx1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MOVHPD", + Operands: []operand.Op{mx, mx1}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{mx1}, + }, nil } - return &avo.Instruction{ - Opcode: "MOVHPD", - Operands: []operand.Op{mx, mx1}, - }, nil + return nil, ErrBadOperandTypes } // MOVHPS: Move High Packed Single-Precision Floating-Point Values. @@ -6001,14 +8712,21 @@ func MOVHPD(mx, mx1 operand.Op) (*avo.Instruction, error) { func MOVHPS(mx, mx1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsM64(mx) && operand.IsXmm(mx1): + return &avo.Instruction{ + Opcode: "MOVHPS", + Operands: []operand.Op{mx, mx1}, + Inputs: []operand.Op{mx, mx1}, + Outputs: []operand.Op{mx1}, + }, nil case operand.IsXmm(mx) && operand.IsM64(mx1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MOVHPS", + Operands: []operand.Op{mx, mx1}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{mx1}, + }, nil } - return &avo.Instruction{ - Opcode: "MOVHPS", - Operands: []operand.Op{mx, mx1}, - }, nil + return nil, ErrBadOperandTypes } // MOVL: Move. @@ -6023,17 +8741,42 @@ func MOVHPS(mx, mx1 operand.Op) (*avo.Instruction, error) { func MOVL(imr, mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm32(imr) && operand.IsR32(mr): + return &avo.Instruction{ + Opcode: "MOVL", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsR32(imr) && operand.IsR32(mr): + return &avo.Instruction{ + Opcode: "MOVL", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{imr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsM32(imr) && operand.IsR32(mr): + return &avo.Instruction{ + Opcode: "MOVL", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{imr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm32(imr) && operand.IsM32(mr): + return &avo.Instruction{ + Opcode: "MOVL", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsR32(imr) && operand.IsM32(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MOVL", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{imr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "MOVL", - Operands: []operand.Op{imr, mr}, - }, nil + return nil, ErrBadOperandTypes } // MOVLHPS: Move Packed Single-Precision Floating-Point Values Low to High. @@ -6044,13 +8787,14 @@ func MOVL(imr, mr operand.Op) (*avo.Instruction, error) { func MOVLHPS(x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MOVLHPS", + Operands: []operand.Op{x, x1}, + Inputs: []operand.Op{x, x1}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "MOVLHPS", - Operands: []operand.Op{x, x1}, - }, nil + return nil, ErrBadOperandTypes } // MOVLPD: Move Low Packed Double-Precision Floating-Point Value. @@ -6062,14 +8806,21 @@ func MOVLHPS(x, x1 operand.Op) (*avo.Instruction, error) { func MOVLPD(mx, mx1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsM64(mx) && operand.IsXmm(mx1): + return &avo.Instruction{ + Opcode: "MOVLPD", + Operands: []operand.Op{mx, mx1}, + Inputs: []operand.Op{mx, mx1}, + Outputs: []operand.Op{mx1}, + }, nil case operand.IsXmm(mx) && operand.IsM64(mx1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MOVLPD", + Operands: []operand.Op{mx, mx1}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{mx1}, + }, nil } - return &avo.Instruction{ - Opcode: "MOVLPD", - Operands: []operand.Op{mx, mx1}, - }, nil + return nil, ErrBadOperandTypes } // MOVLPS: Move Low Packed Single-Precision Floating-Point Values. @@ -6081,14 +8832,21 @@ func MOVLPD(mx, mx1 operand.Op) (*avo.Instruction, error) { func MOVLPS(mx, mx1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsM64(mx) && operand.IsXmm(mx1): + return &avo.Instruction{ + Opcode: "MOVLPS", + Operands: []operand.Op{mx, mx1}, + Inputs: []operand.Op{mx, mx1}, + Outputs: []operand.Op{mx1}, + }, nil case operand.IsXmm(mx) && operand.IsM64(mx1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MOVLPS", + Operands: []operand.Op{mx, mx1}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{mx1}, + }, nil } - return &avo.Instruction{ - Opcode: "MOVLPS", - Operands: []operand.Op{mx, mx1}, - }, nil + return nil, ErrBadOperandTypes } // MOVLQSX: Move Doubleword to Quadword with Sign-Extension. @@ -6100,14 +8858,21 @@ func MOVLPS(mx, mx1 operand.Op) (*avo.Instruction, error) { func MOVLQSX(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR32(mr) && operand.IsR64(r): + return &avo.Instruction{ + Opcode: "MOVLQSX", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM32(mr) && operand.IsR64(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MOVLQSX", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "MOVLQSX", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // MOVLQZX: Move with Zero-Extend. @@ -6118,13 +8883,14 @@ func MOVLQSX(mr, r operand.Op) (*avo.Instruction, error) { func MOVLQZX(m, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsM32(m) && operand.IsR64(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MOVLQZX", + Operands: []operand.Op{m, r}, + Inputs: []operand.Op{m}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "MOVLQZX", - Operands: []operand.Op{m, r}, - }, nil + return nil, ErrBadOperandTypes } // MOVMSKPD: Extract Packed Double-Precision Floating-Point Sign Mask. @@ -6135,13 +8901,14 @@ func MOVLQZX(m, r operand.Op) (*avo.Instruction, error) { func MOVMSKPD(x, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(x) && operand.IsR32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MOVMSKPD", + Operands: []operand.Op{x, r}, + Inputs: []operand.Op{x}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "MOVMSKPD", - Operands: []operand.Op{x, r}, - }, nil + return nil, ErrBadOperandTypes } // MOVMSKPS: Extract Packed Single-Precision Floating-Point Sign Mask. @@ -6152,13 +8919,14 @@ func MOVMSKPD(x, r operand.Op) (*avo.Instruction, error) { func MOVMSKPS(x, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(x) && operand.IsR32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MOVMSKPS", + Operands: []operand.Op{x, r}, + Inputs: []operand.Op{x}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "MOVMSKPS", - Operands: []operand.Op{x, r}, - }, nil + return nil, ErrBadOperandTypes } // MOVNTDQ: Store Double Quadword Using Non-Temporal Hint. @@ -6169,13 +8937,14 @@ func MOVMSKPS(x, r operand.Op) (*avo.Instruction, error) { func MOVNTDQ(x, m operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(x) && operand.IsM128(m): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MOVNTDQ", + Operands: []operand.Op{x, m}, + Inputs: []operand.Op{x}, + Outputs: []operand.Op{m}, + }, nil } - return &avo.Instruction{ - Opcode: "MOVNTDQ", - Operands: []operand.Op{x, m}, - }, nil + return nil, ErrBadOperandTypes } // MOVNTDQA: Load Double Quadword Non-Temporal Aligned Hint. @@ -6186,13 +8955,14 @@ func MOVNTDQ(x, m operand.Op) (*avo.Instruction, error) { func MOVNTDQA(m, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsM128(m) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MOVNTDQA", + Operands: []operand.Op{m, x}, + Inputs: []operand.Op{m}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "MOVNTDQA", - Operands: []operand.Op{m, x}, - }, nil + return nil, ErrBadOperandTypes } // MOVNTIL: Store Doubleword Using Non-Temporal Hint. @@ -6203,13 +8973,14 @@ func MOVNTDQA(m, x operand.Op) (*avo.Instruction, error) { func MOVNTIL(r, m operand.Op) (*avo.Instruction, error) { switch { case operand.IsR32(r) && operand.IsM32(m): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MOVNTIL", + Operands: []operand.Op{r, m}, + Inputs: []operand.Op{r}, + Outputs: []operand.Op{m}, + }, nil } - return &avo.Instruction{ - Opcode: "MOVNTIL", - Operands: []operand.Op{r, m}, - }, nil + return nil, ErrBadOperandTypes } // MOVNTIQ: Store Doubleword Using Non-Temporal Hint. @@ -6220,13 +8991,14 @@ func MOVNTIL(r, m operand.Op) (*avo.Instruction, error) { func MOVNTIQ(r, m operand.Op) (*avo.Instruction, error) { switch { case operand.IsR64(r) && operand.IsM64(m): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MOVNTIQ", + Operands: []operand.Op{r, m}, + Inputs: []operand.Op{r}, + Outputs: []operand.Op{m}, + }, nil } - return &avo.Instruction{ - Opcode: "MOVNTIQ", - Operands: []operand.Op{r, m}, - }, nil + return nil, ErrBadOperandTypes } // MOVNTO: Store Double Quadword Using Non-Temporal Hint. @@ -6237,13 +9009,14 @@ func MOVNTIQ(r, m operand.Op) (*avo.Instruction, error) { func MOVNTO(x, m operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(x) && operand.IsM128(m): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MOVNTO", + Operands: []operand.Op{x, m}, + Inputs: []operand.Op{x}, + Outputs: []operand.Op{m}, + }, nil } - return &avo.Instruction{ - Opcode: "MOVNTO", - Operands: []operand.Op{x, m}, - }, nil + return nil, ErrBadOperandTypes } // MOVNTPD: Store Packed Double-Precision Floating-Point Values Using Non-Temporal Hint. @@ -6254,13 +9027,14 @@ func MOVNTO(x, m operand.Op) (*avo.Instruction, error) { func MOVNTPD(x, m operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(x) && operand.IsM128(m): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MOVNTPD", + Operands: []operand.Op{x, m}, + Inputs: []operand.Op{x}, + Outputs: []operand.Op{m}, + }, nil } - return &avo.Instruction{ - Opcode: "MOVNTPD", - Operands: []operand.Op{x, m}, - }, nil + return nil, ErrBadOperandTypes } // MOVNTPS: Store Packed Single-Precision Floating-Point Values Using Non-Temporal Hint. @@ -6271,13 +9045,14 @@ func MOVNTPD(x, m operand.Op) (*avo.Instruction, error) { func MOVNTPS(x, m operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(x) && operand.IsM128(m): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MOVNTPS", + Operands: []operand.Op{x, m}, + Inputs: []operand.Op{x}, + Outputs: []operand.Op{m}, + }, nil } - return &avo.Instruction{ - Opcode: "MOVNTPS", - Operands: []operand.Op{x, m}, - }, nil + return nil, ErrBadOperandTypes } // MOVO: Move Aligned Double Quadword. @@ -6290,15 +9065,28 @@ func MOVNTPS(x, m operand.Op) (*avo.Instruction, error) { func MOVO(mx, mx1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(mx1): + return &avo.Instruction{ + Opcode: "MOVO", + Operands: []operand.Op{mx, mx1}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{mx1}, + }, nil case operand.IsM128(mx) && operand.IsXmm(mx1): + return &avo.Instruction{ + Opcode: "MOVO", + Operands: []operand.Op{mx, mx1}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{mx1}, + }, nil case operand.IsXmm(mx) && operand.IsM128(mx1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MOVO", + Operands: []operand.Op{mx, mx1}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{mx1}, + }, nil } - return &avo.Instruction{ - Opcode: "MOVO", - Operands: []operand.Op{mx, mx1}, - }, nil + return nil, ErrBadOperandTypes } // MOVOA: Move Aligned Double Quadword. @@ -6311,15 +9099,28 @@ func MOVO(mx, mx1 operand.Op) (*avo.Instruction, error) { func MOVOA(mx, mx1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(mx1): + return &avo.Instruction{ + Opcode: "MOVOA", + Operands: []operand.Op{mx, mx1}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{mx1}, + }, nil case operand.IsM128(mx) && operand.IsXmm(mx1): + return &avo.Instruction{ + Opcode: "MOVOA", + Operands: []operand.Op{mx, mx1}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{mx1}, + }, nil case operand.IsXmm(mx) && operand.IsM128(mx1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MOVOA", + Operands: []operand.Op{mx, mx1}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{mx1}, + }, nil } - return &avo.Instruction{ - Opcode: "MOVOA", - Operands: []operand.Op{mx, mx1}, - }, nil + return nil, ErrBadOperandTypes } // MOVOU: Move Unaligned Double Quadword. @@ -6332,15 +9133,28 @@ func MOVOA(mx, mx1 operand.Op) (*avo.Instruction, error) { func MOVOU(mx, mx1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(mx1): + return &avo.Instruction{ + Opcode: "MOVOU", + Operands: []operand.Op{mx, mx1}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{mx1}, + }, nil case operand.IsM128(mx) && operand.IsXmm(mx1): + return &avo.Instruction{ + Opcode: "MOVOU", + Operands: []operand.Op{mx, mx1}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{mx1}, + }, nil case operand.IsXmm(mx) && operand.IsM128(mx1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MOVOU", + Operands: []operand.Op{mx, mx1}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{mx1}, + }, nil } - return &avo.Instruction{ - Opcode: "MOVOU", - Operands: []operand.Op{mx, mx1}, - }, nil + return nil, ErrBadOperandTypes } // MOVQ: Move. @@ -6361,23 +9175,84 @@ func MOVOU(mx, mx1 operand.Op) (*avo.Instruction, error) { func MOVQ(imrx, mrx operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm32(imrx) && operand.IsR64(mrx): + return &avo.Instruction{ + Opcode: "MOVQ", + Operands: []operand.Op{imrx, mrx}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{mrx}, + }, nil case operand.IsImm64(imrx) && operand.IsR64(mrx): + return &avo.Instruction{ + Opcode: "MOVQ", + Operands: []operand.Op{imrx, mrx}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{mrx}, + }, nil case operand.IsR64(imrx) && operand.IsR64(mrx): + return &avo.Instruction{ + Opcode: "MOVQ", + Operands: []operand.Op{imrx, mrx}, + Inputs: []operand.Op{imrx}, + Outputs: []operand.Op{mrx}, + }, nil case operand.IsM64(imrx) && operand.IsR64(mrx): + return &avo.Instruction{ + Opcode: "MOVQ", + Operands: []operand.Op{imrx, mrx}, + Inputs: []operand.Op{imrx}, + Outputs: []operand.Op{mrx}, + }, nil case operand.IsImm32(imrx) && operand.IsM64(mrx): + return &avo.Instruction{ + Opcode: "MOVQ", + Operands: []operand.Op{imrx, mrx}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{mrx}, + }, nil case operand.IsR64(imrx) && operand.IsM64(mrx): + return &avo.Instruction{ + Opcode: "MOVQ", + Operands: []operand.Op{imrx, mrx}, + Inputs: []operand.Op{imrx}, + Outputs: []operand.Op{mrx}, + }, nil case operand.IsXmm(imrx) && operand.IsR64(mrx): + return &avo.Instruction{ + Opcode: "MOVQ", + Operands: []operand.Op{imrx, mrx}, + Inputs: []operand.Op{imrx}, + Outputs: []operand.Op{mrx}, + }, nil case operand.IsR64(imrx) && operand.IsXmm(mrx): + return &avo.Instruction{ + Opcode: "MOVQ", + Operands: []operand.Op{imrx, mrx}, + Inputs: []operand.Op{imrx}, + Outputs: []operand.Op{mrx}, + }, nil case operand.IsXmm(imrx) && operand.IsXmm(mrx): + return &avo.Instruction{ + Opcode: "MOVQ", + Operands: []operand.Op{imrx, mrx}, + Inputs: []operand.Op{imrx}, + Outputs: []operand.Op{mrx}, + }, nil case operand.IsM64(imrx) && operand.IsXmm(mrx): + return &avo.Instruction{ + Opcode: "MOVQ", + Operands: []operand.Op{imrx, mrx}, + Inputs: []operand.Op{imrx}, + Outputs: []operand.Op{mrx}, + }, nil case operand.IsXmm(imrx) && operand.IsM64(mrx): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MOVQ", + Operands: []operand.Op{imrx, mrx}, + Inputs: []operand.Op{imrx}, + Outputs: []operand.Op{mrx}, + }, nil } - return &avo.Instruction{ - Opcode: "MOVQ", - Operands: []operand.Op{imrx, mrx}, - }, nil + return nil, ErrBadOperandTypes } // MOVSD: Move Scalar Double-Precision Floating-Point Value. @@ -6390,15 +9265,28 @@ func MOVQ(imrx, mrx operand.Op) (*avo.Instruction, error) { func MOVSD(mx, mx1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(mx1): + return &avo.Instruction{ + Opcode: "MOVSD", + Operands: []operand.Op{mx, mx1}, + Inputs: []operand.Op{mx, mx1}, + Outputs: []operand.Op{mx1}, + }, nil case operand.IsM64(mx) && operand.IsXmm(mx1): + return &avo.Instruction{ + Opcode: "MOVSD", + Operands: []operand.Op{mx, mx1}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{mx1}, + }, nil case operand.IsXmm(mx) && operand.IsM64(mx1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MOVSD", + Operands: []operand.Op{mx, mx1}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{mx1}, + }, nil } - return &avo.Instruction{ - Opcode: "MOVSD", - Operands: []operand.Op{mx, mx1}, - }, nil + return nil, ErrBadOperandTypes } // MOVSHDUP: Move Packed Single-FP High and Duplicate. @@ -6410,14 +9298,21 @@ func MOVSD(mx, mx1 operand.Op) (*avo.Instruction, error) { func MOVSHDUP(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "MOVSHDUP", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MOVSHDUP", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "MOVSHDUP", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // MOVSLDUP: Move Packed Single-FP Low and Duplicate. @@ -6429,14 +9324,21 @@ func MOVSHDUP(mx, x operand.Op) (*avo.Instruction, error) { func MOVSLDUP(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "MOVSLDUP", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MOVSLDUP", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "MOVSLDUP", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // MOVSS: Move Scalar Single-Precision Floating-Point Values. @@ -6449,15 +9351,28 @@ func MOVSLDUP(mx, x operand.Op) (*avo.Instruction, error) { func MOVSS(mx, mx1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(mx1): + return &avo.Instruction{ + Opcode: "MOVSS", + Operands: []operand.Op{mx, mx1}, + Inputs: []operand.Op{mx, mx1}, + Outputs: []operand.Op{mx1}, + }, nil case operand.IsM32(mx) && operand.IsXmm(mx1): + return &avo.Instruction{ + Opcode: "MOVSS", + Operands: []operand.Op{mx, mx1}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{mx1}, + }, nil case operand.IsXmm(mx) && operand.IsM32(mx1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MOVSS", + Operands: []operand.Op{mx, mx1}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{mx1}, + }, nil } - return &avo.Instruction{ - Opcode: "MOVSS", - Operands: []operand.Op{mx, mx1}, - }, nil + return nil, ErrBadOperandTypes } // MOVUPD: Move Unaligned Packed Double-Precision Floating-Point Values. @@ -6470,15 +9385,28 @@ func MOVSS(mx, mx1 operand.Op) (*avo.Instruction, error) { func MOVUPD(mx, mx1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(mx1): + return &avo.Instruction{ + Opcode: "MOVUPD", + Operands: []operand.Op{mx, mx1}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{mx1}, + }, nil case operand.IsM128(mx) && operand.IsXmm(mx1): + return &avo.Instruction{ + Opcode: "MOVUPD", + Operands: []operand.Op{mx, mx1}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{mx1}, + }, nil case operand.IsXmm(mx) && operand.IsM128(mx1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MOVUPD", + Operands: []operand.Op{mx, mx1}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{mx1}, + }, nil } - return &avo.Instruction{ - Opcode: "MOVUPD", - Operands: []operand.Op{mx, mx1}, - }, nil + return nil, ErrBadOperandTypes } // MOVUPS: Move Unaligned Packed Single-Precision Floating-Point Values. @@ -6491,15 +9419,28 @@ func MOVUPD(mx, mx1 operand.Op) (*avo.Instruction, error) { func MOVUPS(mx, mx1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(mx1): + return &avo.Instruction{ + Opcode: "MOVUPS", + Operands: []operand.Op{mx, mx1}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{mx1}, + }, nil case operand.IsM128(mx) && operand.IsXmm(mx1): + return &avo.Instruction{ + Opcode: "MOVUPS", + Operands: []operand.Op{mx, mx1}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{mx1}, + }, nil case operand.IsXmm(mx) && operand.IsM128(mx1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MOVUPS", + Operands: []operand.Op{mx, mx1}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{mx1}, + }, nil } - return &avo.Instruction{ - Opcode: "MOVUPS", - Operands: []operand.Op{mx, mx1}, - }, nil + return nil, ErrBadOperandTypes } // MOVW: Move. @@ -6514,17 +9455,42 @@ func MOVUPS(mx, mx1 operand.Op) (*avo.Instruction, error) { func MOVW(imr, mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm16(imr) && operand.IsR16(mr): + return &avo.Instruction{ + Opcode: "MOVW", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsR16(imr) && operand.IsR16(mr): + return &avo.Instruction{ + Opcode: "MOVW", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{imr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsM16(imr) && operand.IsR16(mr): + return &avo.Instruction{ + Opcode: "MOVW", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{imr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm16(imr) && operand.IsM16(mr): + return &avo.Instruction{ + Opcode: "MOVW", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsR16(imr) && operand.IsM16(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MOVW", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{imr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "MOVW", - Operands: []operand.Op{imr, mr}, - }, nil + return nil, ErrBadOperandTypes } // MOVWLSX: Move with Sign-Extension. @@ -6536,14 +9502,21 @@ func MOVW(imr, mr operand.Op) (*avo.Instruction, error) { func MOVWLSX(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR16(mr) && operand.IsR32(r): + return &avo.Instruction{ + Opcode: "MOVWLSX", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM16(mr) && operand.IsR32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MOVWLSX", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "MOVWLSX", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // MOVWLZX: Move with Zero-Extend. @@ -6555,14 +9528,21 @@ func MOVWLSX(mr, r operand.Op) (*avo.Instruction, error) { func MOVWLZX(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR16(mr) && operand.IsR32(r): + return &avo.Instruction{ + Opcode: "MOVWLZX", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM16(mr) && operand.IsR32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MOVWLZX", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "MOVWLZX", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // MOVWQSX: Move with Sign-Extension. @@ -6574,14 +9554,21 @@ func MOVWLZX(mr, r operand.Op) (*avo.Instruction, error) { func MOVWQSX(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR16(mr) && operand.IsR64(r): + return &avo.Instruction{ + Opcode: "MOVWQSX", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM16(mr) && operand.IsR64(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MOVWQSX", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "MOVWQSX", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // MOVWQZX: Move with Zero-Extend. @@ -6593,14 +9580,21 @@ func MOVWQSX(mr, r operand.Op) (*avo.Instruction, error) { func MOVWQZX(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR16(mr) && operand.IsR64(r): + return &avo.Instruction{ + Opcode: "MOVWQZX", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM16(mr) && operand.IsR64(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MOVWQZX", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "MOVWQZX", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // MPSADBW: Compute Multiple Packed Sums of Absolute Difference. @@ -6612,14 +9606,21 @@ func MOVWQZX(mr, r operand.Op) (*avo.Instruction, error) { func MPSADBW(i, mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "MPSADBW", + Operands: []operand.Op{i, mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsImm8(i) && operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MPSADBW", + Operands: []operand.Op{i, mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "MPSADBW", - Operands: []operand.Op{i, mx, x}, - }, nil + return nil, ErrBadOperandTypes } // MULB: Unsigned Multiply. @@ -6631,14 +9632,21 @@ func MPSADBW(i, mx, x operand.Op) (*avo.Instruction, error) { func MULB(mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsR8(mr): + return &avo.Instruction{ + Opcode: "MULB", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{}, + }, nil case operand.IsM8(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MULB", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "MULB", - Operands: []operand.Op{mr}, - }, nil + return nil, ErrBadOperandTypes } // MULL: Unsigned Multiply. @@ -6650,14 +9658,21 @@ func MULB(mr operand.Op) (*avo.Instruction, error) { func MULL(mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsR32(mr): + return &avo.Instruction{ + Opcode: "MULL", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{}, + }, nil case operand.IsM32(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MULL", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "MULL", - Operands: []operand.Op{mr}, - }, nil + return nil, ErrBadOperandTypes } // MULPD: Multiply Packed Double-Precision Floating-Point Values. @@ -6669,14 +9684,21 @@ func MULL(mr operand.Op) (*avo.Instruction, error) { func MULPD(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "MULPD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MULPD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "MULPD", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // MULPS: Multiply Packed Single-Precision Floating-Point Values. @@ -6688,14 +9710,21 @@ func MULPD(mx, x operand.Op) (*avo.Instruction, error) { func MULPS(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "MULPS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MULPS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "MULPS", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // MULQ: Unsigned Multiply. @@ -6707,14 +9736,21 @@ func MULPS(mx, x operand.Op) (*avo.Instruction, error) { func MULQ(mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "MULQ", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{}, + }, nil case operand.IsM64(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MULQ", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "MULQ", - Operands: []operand.Op{mr}, - }, nil + return nil, ErrBadOperandTypes } // MULSD: Multiply Scalar Double-Precision Floating-Point Values. @@ -6726,14 +9762,21 @@ func MULQ(mr operand.Op) (*avo.Instruction, error) { func MULSD(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "MULSD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM64(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MULSD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "MULSD", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // MULSS: Multiply Scalar Single-Precision Floating-Point Values. @@ -6745,14 +9788,21 @@ func MULSD(mx, x operand.Op) (*avo.Instruction, error) { func MULSS(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "MULSS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM32(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MULSS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "MULSS", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // MULW: Unsigned Multiply. @@ -6764,14 +9814,21 @@ func MULSS(mx, x operand.Op) (*avo.Instruction, error) { func MULW(mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsR16(mr): + return &avo.Instruction{ + Opcode: "MULW", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{}, + }, nil case operand.IsM16(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MULW", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "MULW", - Operands: []operand.Op{mr}, - }, nil + return nil, ErrBadOperandTypes } // MULXL: Unsigned Multiply Without Affecting Flags. @@ -6783,14 +9840,21 @@ func MULW(mr operand.Op) (*avo.Instruction, error) { func MULXL(mr, r, r1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsR32(mr) && operand.IsR32(r) && operand.IsR32(r1): + return &avo.Instruction{ + Opcode: "MULXL", + Operands: []operand.Op{mr, r, r1}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r, r1}, + }, nil case operand.IsM32(mr) && operand.IsR32(r) && operand.IsR32(r1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MULXL", + Operands: []operand.Op{mr, r, r1}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r, r1}, + }, nil } - return &avo.Instruction{ - Opcode: "MULXL", - Operands: []operand.Op{mr, r, r1}, - }, nil + return nil, ErrBadOperandTypes } // MULXQ: Unsigned Multiply Without Affecting Flags. @@ -6802,14 +9866,21 @@ func MULXL(mr, r, r1 operand.Op) (*avo.Instruction, error) { func MULXQ(mr, r, r1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsR64(mr) && operand.IsR64(r) && operand.IsR64(r1): + return &avo.Instruction{ + Opcode: "MULXQ", + Operands: []operand.Op{mr, r, r1}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r, r1}, + }, nil case operand.IsM64(mr) && operand.IsR64(r) && operand.IsR64(r1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "MULXQ", + Operands: []operand.Op{mr, r, r1}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r, r1}, + }, nil } - return &avo.Instruction{ - Opcode: "MULXQ", - Operands: []operand.Op{mr, r, r1}, - }, nil + return nil, ErrBadOperandTypes } // MWAIT: Monitor Wait. @@ -6821,6 +9892,8 @@ func MWAIT() (*avo.Instruction, error) { return &avo.Instruction{ Opcode: "MWAIT", Operands: nil, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, }, nil } @@ -6833,14 +9906,21 @@ func MWAIT() (*avo.Instruction, error) { func NEGB(mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsR8(mr): + return &avo.Instruction{ + Opcode: "NEGB", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsM8(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "NEGB", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "NEGB", - Operands: []operand.Op{mr}, - }, nil + return nil, ErrBadOperandTypes } // NEGL: Two's Complement Negation. @@ -6852,14 +9932,21 @@ func NEGB(mr operand.Op) (*avo.Instruction, error) { func NEGL(mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsR32(mr): + return &avo.Instruction{ + Opcode: "NEGL", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsM32(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "NEGL", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "NEGL", - Operands: []operand.Op{mr}, - }, nil + return nil, ErrBadOperandTypes } // NEGQ: Two's Complement Negation. @@ -6871,14 +9958,21 @@ func NEGL(mr operand.Op) (*avo.Instruction, error) { func NEGQ(mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "NEGQ", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsM64(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "NEGQ", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "NEGQ", - Operands: []operand.Op{mr}, - }, nil + return nil, ErrBadOperandTypes } // NEGW: Two's Complement Negation. @@ -6890,14 +9984,21 @@ func NEGQ(mr operand.Op) (*avo.Instruction, error) { func NEGW(mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsR16(mr): + return &avo.Instruction{ + Opcode: "NEGW", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsM16(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "NEGW", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "NEGW", - Operands: []operand.Op{mr}, - }, nil + return nil, ErrBadOperandTypes } // NOP: No Operation. @@ -6909,6 +10010,8 @@ func NOP() (*avo.Instruction, error) { return &avo.Instruction{ Opcode: "NOP", Operands: nil, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, }, nil } @@ -6921,14 +10024,21 @@ func NOP() (*avo.Instruction, error) { func NOTB(mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsR8(mr): + return &avo.Instruction{ + Opcode: "NOTB", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsM8(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "NOTB", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "NOTB", - Operands: []operand.Op{mr}, - }, nil + return nil, ErrBadOperandTypes } // NOTL: One's Complement Negation. @@ -6940,14 +10050,21 @@ func NOTB(mr operand.Op) (*avo.Instruction, error) { func NOTL(mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsR32(mr): + return &avo.Instruction{ + Opcode: "NOTL", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsM32(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "NOTL", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "NOTL", - Operands: []operand.Op{mr}, - }, nil + return nil, ErrBadOperandTypes } // NOTQ: One's Complement Negation. @@ -6959,14 +10076,21 @@ func NOTL(mr operand.Op) (*avo.Instruction, error) { func NOTQ(mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "NOTQ", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsM64(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "NOTQ", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "NOTQ", - Operands: []operand.Op{mr}, - }, nil + return nil, ErrBadOperandTypes } // NOTW: One's Complement Negation. @@ -6978,14 +10102,21 @@ func NOTQ(mr operand.Op) (*avo.Instruction, error) { func NOTW(mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsR16(mr): + return &avo.Instruction{ + Opcode: "NOTW", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsM16(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "NOTW", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "NOTW", - Operands: []operand.Op{mr}, - }, nil + return nil, ErrBadOperandTypes } // ORB: Logical Inclusive OR. @@ -7001,18 +10132,49 @@ func NOTW(mr operand.Op) (*avo.Instruction, error) { func ORB(imr, amr operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(imr) && operand.IsAl(amr): + return &avo.Instruction{ + Opcode: "ORB", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsImm8(imr) && operand.IsR8(amr): + return &avo.Instruction{ + Opcode: "ORB", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsR8(imr) && operand.IsR8(amr): + return &avo.Instruction{ + Opcode: "ORB", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{imr, amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsM8(imr) && operand.IsR8(amr): + return &avo.Instruction{ + Opcode: "ORB", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{imr, amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsImm8(imr) && operand.IsM8(amr): + return &avo.Instruction{ + Opcode: "ORB", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsR8(imr) && operand.IsM8(amr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "ORB", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{imr, amr}, + Outputs: []operand.Op{amr}, + }, nil } - return &avo.Instruction{ - Opcode: "ORB", - Operands: []operand.Op{imr, amr}, - }, nil + return nil, ErrBadOperandTypes } // ORL: Logical Inclusive OR. @@ -7030,20 +10192,63 @@ func ORB(imr, amr operand.Op) (*avo.Instruction, error) { func ORL(imr, emr operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm32(imr) && operand.IsEax(emr): + return &avo.Instruction{ + Opcode: "ORL", + Operands: []operand.Op{imr, emr}, + Inputs: []operand.Op{emr}, + Outputs: []operand.Op{emr}, + }, nil case operand.IsImm8(imr) && operand.IsR32(emr): + return &avo.Instruction{ + Opcode: "ORL", + Operands: []operand.Op{imr, emr}, + Inputs: []operand.Op{emr}, + Outputs: []operand.Op{emr}, + }, nil case operand.IsImm32(imr) && operand.IsR32(emr): + return &avo.Instruction{ + Opcode: "ORL", + Operands: []operand.Op{imr, emr}, + Inputs: []operand.Op{emr}, + Outputs: []operand.Op{emr}, + }, nil case operand.IsR32(imr) && operand.IsR32(emr): + return &avo.Instruction{ + Opcode: "ORL", + Operands: []operand.Op{imr, emr}, + Inputs: []operand.Op{imr, emr}, + Outputs: []operand.Op{emr}, + }, nil case operand.IsM32(imr) && operand.IsR32(emr): + return &avo.Instruction{ + Opcode: "ORL", + Operands: []operand.Op{imr, emr}, + Inputs: []operand.Op{imr, emr}, + Outputs: []operand.Op{emr}, + }, nil case operand.IsImm8(imr) && operand.IsM32(emr): + return &avo.Instruction{ + Opcode: "ORL", + Operands: []operand.Op{imr, emr}, + Inputs: []operand.Op{emr}, + Outputs: []operand.Op{emr}, + }, nil case operand.IsImm32(imr) && operand.IsM32(emr): + return &avo.Instruction{ + Opcode: "ORL", + Operands: []operand.Op{imr, emr}, + Inputs: []operand.Op{emr}, + Outputs: []operand.Op{emr}, + }, nil case operand.IsR32(imr) && operand.IsM32(emr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "ORL", + Operands: []operand.Op{imr, emr}, + Inputs: []operand.Op{imr, emr}, + Outputs: []operand.Op{emr}, + }, nil } - return &avo.Instruction{ - Opcode: "ORL", - Operands: []operand.Op{imr, emr}, - }, nil + return nil, ErrBadOperandTypes } // ORPD: Bitwise Logical OR of Double-Precision Floating-Point Values. @@ -7055,14 +10260,21 @@ func ORL(imr, emr operand.Op) (*avo.Instruction, error) { func ORPD(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "ORPD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "ORPD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "ORPD", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // ORPS: Bitwise Logical OR of Single-Precision Floating-Point Values. @@ -7074,14 +10286,21 @@ func ORPD(mx, x operand.Op) (*avo.Instruction, error) { func ORPS(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "ORPS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "ORPS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "ORPS", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // ORQ: Logical Inclusive OR. @@ -7099,20 +10318,63 @@ func ORPS(mx, x operand.Op) (*avo.Instruction, error) { func ORQ(imr, mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm32(imr) && operand.IsRax(mr): + return &avo.Instruction{ + Opcode: "ORQ", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(imr) && operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "ORQ", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm32(imr) && operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "ORQ", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsR64(imr) && operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "ORQ", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{imr, mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsM64(imr) && operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "ORQ", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{imr, mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(imr) && operand.IsM64(mr): + return &avo.Instruction{ + Opcode: "ORQ", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm32(imr) && operand.IsM64(mr): + return &avo.Instruction{ + Opcode: "ORQ", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsR64(imr) && operand.IsM64(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "ORQ", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{imr, mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "ORQ", - Operands: []operand.Op{imr, mr}, - }, nil + return nil, ErrBadOperandTypes } // ORW: Logical Inclusive OR. @@ -7130,20 +10392,63 @@ func ORQ(imr, mr operand.Op) (*avo.Instruction, error) { func ORW(imr, amr operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm16(imr) && operand.IsAx(amr): + return &avo.Instruction{ + Opcode: "ORW", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsImm8(imr) && operand.IsR16(amr): + return &avo.Instruction{ + Opcode: "ORW", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsImm16(imr) && operand.IsR16(amr): + return &avo.Instruction{ + Opcode: "ORW", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsR16(imr) && operand.IsR16(amr): + return &avo.Instruction{ + Opcode: "ORW", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{imr, amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsM16(imr) && operand.IsR16(amr): + return &avo.Instruction{ + Opcode: "ORW", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{imr, amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsImm8(imr) && operand.IsM16(amr): + return &avo.Instruction{ + Opcode: "ORW", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsImm16(imr) && operand.IsM16(amr): + return &avo.Instruction{ + Opcode: "ORW", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsR16(imr) && operand.IsM16(amr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "ORW", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{imr, amr}, + Outputs: []operand.Op{amr}, + }, nil } - return &avo.Instruction{ - Opcode: "ORW", - Operands: []operand.Op{imr, amr}, - }, nil + return nil, ErrBadOperandTypes } // PABSB: Packed Absolute Value of Byte Integers. @@ -7155,14 +10460,21 @@ func ORW(imr, amr operand.Op) (*avo.Instruction, error) { func PABSB(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PABSB", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PABSB", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PABSB", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PABSD: Packed Absolute Value of Doubleword Integers. @@ -7174,14 +10486,21 @@ func PABSB(mx, x operand.Op) (*avo.Instruction, error) { func PABSD(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PABSD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PABSD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PABSD", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PABSW: Packed Absolute Value of Word Integers. @@ -7193,14 +10512,21 @@ func PABSD(mx, x operand.Op) (*avo.Instruction, error) { func PABSW(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PABSW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PABSW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PABSW", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PACKSSLW: Pack Doublewords into Words with Signed Saturation. @@ -7212,14 +10538,21 @@ func PABSW(mx, x operand.Op) (*avo.Instruction, error) { func PACKSSLW(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PACKSSLW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PACKSSLW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PACKSSLW", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PACKSSWB: Pack Words into Bytes with Signed Saturation. @@ -7231,14 +10564,21 @@ func PACKSSLW(mx, x operand.Op) (*avo.Instruction, error) { func PACKSSWB(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PACKSSWB", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PACKSSWB", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PACKSSWB", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PACKUSDW: Pack Doublewords into Words with Unsigned Saturation. @@ -7250,14 +10590,21 @@ func PACKSSWB(mx, x operand.Op) (*avo.Instruction, error) { func PACKUSDW(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PACKUSDW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PACKUSDW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PACKUSDW", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PACKUSWB: Pack Words into Bytes with Unsigned Saturation. @@ -7269,14 +10616,21 @@ func PACKUSDW(mx, x operand.Op) (*avo.Instruction, error) { func PACKUSWB(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PACKUSWB", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PACKUSWB", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PACKUSWB", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PADDB: Add Packed Byte Integers. @@ -7288,14 +10642,21 @@ func PACKUSWB(mx, x operand.Op) (*avo.Instruction, error) { func PADDB(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PADDB", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PADDB", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PADDB", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PADDD: Add Packed Doubleword Integers. @@ -7307,14 +10668,21 @@ func PADDB(mx, x operand.Op) (*avo.Instruction, error) { func PADDD(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PADDD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PADDD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PADDD", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PADDL: Add Packed Doubleword Integers. @@ -7326,14 +10694,21 @@ func PADDD(mx, x operand.Op) (*avo.Instruction, error) { func PADDL(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PADDL", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PADDL", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PADDL", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PADDQ: Add Packed Quadword Integers. @@ -7345,14 +10720,21 @@ func PADDL(mx, x operand.Op) (*avo.Instruction, error) { func PADDQ(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PADDQ", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PADDQ", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PADDQ", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PADDSB: Add Packed Signed Byte Integers with Signed Saturation. @@ -7364,14 +10746,21 @@ func PADDQ(mx, x operand.Op) (*avo.Instruction, error) { func PADDSB(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PADDSB", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PADDSB", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PADDSB", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PADDSW: Add Packed Signed Word Integers with Signed Saturation. @@ -7383,14 +10772,21 @@ func PADDSB(mx, x operand.Op) (*avo.Instruction, error) { func PADDSW(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PADDSW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PADDSW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PADDSW", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PADDUSB: Add Packed Unsigned Byte Integers with Unsigned Saturation. @@ -7402,14 +10798,21 @@ func PADDSW(mx, x operand.Op) (*avo.Instruction, error) { func PADDUSB(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PADDUSB", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PADDUSB", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PADDUSB", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PADDUSW: Add Packed Unsigned Word Integers with Unsigned Saturation. @@ -7421,14 +10824,21 @@ func PADDUSB(mx, x operand.Op) (*avo.Instruction, error) { func PADDUSW(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PADDUSW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PADDUSW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PADDUSW", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PADDW: Add Packed Word Integers. @@ -7440,14 +10850,21 @@ func PADDUSW(mx, x operand.Op) (*avo.Instruction, error) { func PADDW(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PADDW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PADDW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PADDW", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PALIGNR: Packed Align Right. @@ -7459,14 +10876,21 @@ func PADDW(mx, x operand.Op) (*avo.Instruction, error) { func PALIGNR(i, mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PALIGNR", + Operands: []operand.Op{i, mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsImm8(i) && operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PALIGNR", + Operands: []operand.Op{i, mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PALIGNR", - Operands: []operand.Op{i, mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PAND: Packed Bitwise Logical AND. @@ -7478,14 +10902,21 @@ func PALIGNR(i, mx, x operand.Op) (*avo.Instruction, error) { func PAND(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PAND", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PAND", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PAND", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PANDN: Packed Bitwise Logical AND NOT. @@ -7497,14 +10928,21 @@ func PAND(mx, x operand.Op) (*avo.Instruction, error) { func PANDN(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PANDN", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PANDN", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PANDN", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PAUSE: Spin Loop Hint. @@ -7516,6 +10954,8 @@ func PAUSE() (*avo.Instruction, error) { return &avo.Instruction{ Opcode: "PAUSE", Operands: nil, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, }, nil } @@ -7528,14 +10968,21 @@ func PAUSE() (*avo.Instruction, error) { func PAVGB(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PAVGB", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PAVGB", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PAVGB", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PAVGW: Average Packed Word Integers. @@ -7547,14 +10994,21 @@ func PAVGB(mx, x operand.Op) (*avo.Instruction, error) { func PAVGW(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PAVGW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PAVGW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PAVGW", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PBLENDVB: Variable Blend Packed Bytes. @@ -7566,14 +11020,21 @@ func PAVGW(mx, x operand.Op) (*avo.Instruction, error) { func PBLENDVB(x, mx, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm0(x) && operand.IsXmm(mx) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "PBLENDVB", + Operands: []operand.Op{x, mx, x1}, + Inputs: []operand.Op{x, mx, x1}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsXmm0(x) && operand.IsM128(mx) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PBLENDVB", + Operands: []operand.Op{x, mx, x1}, + Inputs: []operand.Op{x, mx, x1}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "PBLENDVB", - Operands: []operand.Op{x, mx, x1}, - }, nil + return nil, ErrBadOperandTypes } // PBLENDW: Blend Packed Words. @@ -7585,14 +11046,21 @@ func PBLENDVB(x, mx, x1 operand.Op) (*avo.Instruction, error) { func PBLENDW(i, mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PBLENDW", + Operands: []operand.Op{i, mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsImm8(i) && operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PBLENDW", + Operands: []operand.Op{i, mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PBLENDW", - Operands: []operand.Op{i, mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PCLMULQDQ: Carry-Less Quadword Multiplication. @@ -7604,14 +11072,21 @@ func PBLENDW(i, mx, x operand.Op) (*avo.Instruction, error) { func PCLMULQDQ(i, mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PCLMULQDQ", + Operands: []operand.Op{i, mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsImm8(i) && operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PCLMULQDQ", + Operands: []operand.Op{i, mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PCLMULQDQ", - Operands: []operand.Op{i, mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PCMPEQB: Compare Packed Byte Data for Equality. @@ -7623,14 +11098,21 @@ func PCLMULQDQ(i, mx, x operand.Op) (*avo.Instruction, error) { func PCMPEQB(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PCMPEQB", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PCMPEQB", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PCMPEQB", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PCMPEQL: Compare Packed Doubleword Data for Equality. @@ -7642,14 +11124,21 @@ func PCMPEQB(mx, x operand.Op) (*avo.Instruction, error) { func PCMPEQL(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PCMPEQL", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PCMPEQL", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PCMPEQL", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PCMPEQQ: Compare Packed Quadword Data for Equality. @@ -7661,14 +11150,21 @@ func PCMPEQL(mx, x operand.Op) (*avo.Instruction, error) { func PCMPEQQ(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PCMPEQQ", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PCMPEQQ", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PCMPEQQ", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PCMPEQW: Compare Packed Word Data for Equality. @@ -7680,14 +11176,21 @@ func PCMPEQQ(mx, x operand.Op) (*avo.Instruction, error) { func PCMPEQW(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PCMPEQW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PCMPEQW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PCMPEQW", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PCMPESTRI: Packed Compare Explicit Length Strings, Return Index. @@ -7699,14 +11202,21 @@ func PCMPEQW(mx, x operand.Op) (*avo.Instruction, error) { func PCMPESTRI(i, mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PCMPESTRI", + Operands: []operand.Op{i, mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{}, + }, nil case operand.IsImm8(i) && operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PCMPESTRI", + Operands: []operand.Op{i, mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "PCMPESTRI", - Operands: []operand.Op{i, mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PCMPESTRM: Packed Compare Explicit Length Strings, Return Mask. @@ -7718,14 +11228,21 @@ func PCMPESTRI(i, mx, x operand.Op) (*avo.Instruction, error) { func PCMPESTRM(i, mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PCMPESTRM", + Operands: []operand.Op{i, mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{}, + }, nil case operand.IsImm8(i) && operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PCMPESTRM", + Operands: []operand.Op{i, mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "PCMPESTRM", - Operands: []operand.Op{i, mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PCMPGTB: Compare Packed Signed Byte Integers for Greater Than. @@ -7737,14 +11254,21 @@ func PCMPESTRM(i, mx, x operand.Op) (*avo.Instruction, error) { func PCMPGTB(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PCMPGTB", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PCMPGTB", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PCMPGTB", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PCMPGTL: Compare Packed Signed Doubleword Integers for Greater Than. @@ -7756,14 +11280,21 @@ func PCMPGTB(mx, x operand.Op) (*avo.Instruction, error) { func PCMPGTL(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PCMPGTL", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PCMPGTL", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PCMPGTL", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PCMPGTQ: Compare Packed Data for Greater Than. @@ -7775,14 +11306,21 @@ func PCMPGTL(mx, x operand.Op) (*avo.Instruction, error) { func PCMPGTQ(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PCMPGTQ", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PCMPGTQ", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PCMPGTQ", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PCMPGTW: Compare Packed Signed Word Integers for Greater Than. @@ -7794,14 +11332,21 @@ func PCMPGTQ(mx, x operand.Op) (*avo.Instruction, error) { func PCMPGTW(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PCMPGTW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PCMPGTW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PCMPGTW", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PCMPISTRI: Packed Compare Implicit Length Strings, Return Index. @@ -7813,14 +11358,21 @@ func PCMPGTW(mx, x operand.Op) (*avo.Instruction, error) { func PCMPISTRI(i, mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PCMPISTRI", + Operands: []operand.Op{i, mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{}, + }, nil case operand.IsImm8(i) && operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PCMPISTRI", + Operands: []operand.Op{i, mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "PCMPISTRI", - Operands: []operand.Op{i, mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PCMPISTRM: Packed Compare Implicit Length Strings, Return Mask. @@ -7832,14 +11384,21 @@ func PCMPISTRI(i, mx, x operand.Op) (*avo.Instruction, error) { func PCMPISTRM(i, mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PCMPISTRM", + Operands: []operand.Op{i, mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{}, + }, nil case operand.IsImm8(i) && operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PCMPISTRM", + Operands: []operand.Op{i, mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "PCMPISTRM", - Operands: []operand.Op{i, mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PDEPL: Parallel Bits Deposit. @@ -7851,14 +11410,21 @@ func PCMPISTRM(i, mx, x operand.Op) (*avo.Instruction, error) { func PDEPL(mr, r, r1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsR32(mr) && operand.IsR32(r) && operand.IsR32(r1): + return &avo.Instruction{ + Opcode: "PDEPL", + Operands: []operand.Op{mr, r, r1}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r1}, + }, nil case operand.IsM32(mr) && operand.IsR32(r) && operand.IsR32(r1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PDEPL", + Operands: []operand.Op{mr, r, r1}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r1}, + }, nil } - return &avo.Instruction{ - Opcode: "PDEPL", - Operands: []operand.Op{mr, r, r1}, - }, nil + return nil, ErrBadOperandTypes } // PDEPQ: Parallel Bits Deposit. @@ -7870,14 +11436,21 @@ func PDEPL(mr, r, r1 operand.Op) (*avo.Instruction, error) { func PDEPQ(mr, r, r1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsR64(mr) && operand.IsR64(r) && operand.IsR64(r1): + return &avo.Instruction{ + Opcode: "PDEPQ", + Operands: []operand.Op{mr, r, r1}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r1}, + }, nil case operand.IsM64(mr) && operand.IsR64(r) && operand.IsR64(r1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PDEPQ", + Operands: []operand.Op{mr, r, r1}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r1}, + }, nil } - return &avo.Instruction{ - Opcode: "PDEPQ", - Operands: []operand.Op{mr, r, r1}, - }, nil + return nil, ErrBadOperandTypes } // PEXTL: Parallel Bits Extract. @@ -7889,14 +11462,21 @@ func PDEPQ(mr, r, r1 operand.Op) (*avo.Instruction, error) { func PEXTL(mr, r, r1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsR32(mr) && operand.IsR32(r) && operand.IsR32(r1): + return &avo.Instruction{ + Opcode: "PEXTL", + Operands: []operand.Op{mr, r, r1}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r1}, + }, nil case operand.IsM32(mr) && operand.IsR32(r) && operand.IsR32(r1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PEXTL", + Operands: []operand.Op{mr, r, r1}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r1}, + }, nil } - return &avo.Instruction{ - Opcode: "PEXTL", - Operands: []operand.Op{mr, r, r1}, - }, nil + return nil, ErrBadOperandTypes } // PEXTQ: Parallel Bits Extract. @@ -7908,14 +11488,21 @@ func PEXTL(mr, r, r1 operand.Op) (*avo.Instruction, error) { func PEXTQ(mr, r, r1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsR64(mr) && operand.IsR64(r) && operand.IsR64(r1): + return &avo.Instruction{ + Opcode: "PEXTQ", + Operands: []operand.Op{mr, r, r1}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r1}, + }, nil case operand.IsM64(mr) && operand.IsR64(r) && operand.IsR64(r1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PEXTQ", + Operands: []operand.Op{mr, r, r1}, + Inputs: []operand.Op{mr, r}, + Outputs: []operand.Op{r1}, + }, nil } - return &avo.Instruction{ - Opcode: "PEXTQ", - Operands: []operand.Op{mr, r, r1}, - }, nil + return nil, ErrBadOperandTypes } // PEXTRB: Extract Byte. @@ -7927,14 +11514,21 @@ func PEXTQ(mr, r, r1 operand.Op) (*avo.Instruction, error) { func PEXTRB(i, x, mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(x) && operand.IsR32(mr): + return &avo.Instruction{ + Opcode: "PEXTRB", + Operands: []operand.Op{i, x, mr}, + Inputs: []operand.Op{x}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(i) && operand.IsXmm(x) && operand.IsM8(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PEXTRB", + Operands: []operand.Op{i, x, mr}, + Inputs: []operand.Op{x}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "PEXTRB", - Operands: []operand.Op{i, x, mr}, - }, nil + return nil, ErrBadOperandTypes } // PEXTRD: Extract Doubleword. @@ -7946,14 +11540,21 @@ func PEXTRB(i, x, mr operand.Op) (*avo.Instruction, error) { func PEXTRD(i, x, mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(x) && operand.IsR32(mr): + return &avo.Instruction{ + Opcode: "PEXTRD", + Operands: []operand.Op{i, x, mr}, + Inputs: []operand.Op{x}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(i) && operand.IsXmm(x) && operand.IsM32(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PEXTRD", + Operands: []operand.Op{i, x, mr}, + Inputs: []operand.Op{x}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "PEXTRD", - Operands: []operand.Op{i, x, mr}, - }, nil + return nil, ErrBadOperandTypes } // PEXTRQ: Extract Quadword. @@ -7965,14 +11566,21 @@ func PEXTRD(i, x, mr operand.Op) (*avo.Instruction, error) { func PEXTRQ(i, x, mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(x) && operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "PEXTRQ", + Operands: []operand.Op{i, x, mr}, + Inputs: []operand.Op{x}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(i) && operand.IsXmm(x) && operand.IsM64(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PEXTRQ", + Operands: []operand.Op{i, x, mr}, + Inputs: []operand.Op{x}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "PEXTRQ", - Operands: []operand.Op{i, x, mr}, - }, nil + return nil, ErrBadOperandTypes } // PEXTRW: Extract Word. @@ -7984,14 +11592,21 @@ func PEXTRQ(i, x, mr operand.Op) (*avo.Instruction, error) { func PEXTRW(i, x, mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(x) && operand.IsR32(mr): + return &avo.Instruction{ + Opcode: "PEXTRW", + Operands: []operand.Op{i, x, mr}, + Inputs: []operand.Op{x}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(i) && operand.IsXmm(x) && operand.IsM16(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PEXTRW", + Operands: []operand.Op{i, x, mr}, + Inputs: []operand.Op{x}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "PEXTRW", - Operands: []operand.Op{i, x, mr}, - }, nil + return nil, ErrBadOperandTypes } // PHADDD: Packed Horizontal Add Doubleword Integer. @@ -8003,14 +11618,21 @@ func PEXTRW(i, x, mr operand.Op) (*avo.Instruction, error) { func PHADDD(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PHADDD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PHADDD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PHADDD", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PHADDSW: Packed Horizontal Add Signed Word Integers with Signed Saturation. @@ -8022,14 +11644,21 @@ func PHADDD(mx, x operand.Op) (*avo.Instruction, error) { func PHADDSW(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PHADDSW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PHADDSW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PHADDSW", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PHADDW: Packed Horizontal Add Word Integers. @@ -8041,14 +11670,21 @@ func PHADDSW(mx, x operand.Op) (*avo.Instruction, error) { func PHADDW(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PHADDW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PHADDW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PHADDW", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PHMINPOSUW: Packed Horizontal Minimum of Unsigned Word Integers. @@ -8060,14 +11696,21 @@ func PHADDW(mx, x operand.Op) (*avo.Instruction, error) { func PHMINPOSUW(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PHMINPOSUW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PHMINPOSUW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PHMINPOSUW", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PHSUBD: Packed Horizontal Subtract Doubleword Integers. @@ -8079,14 +11722,21 @@ func PHMINPOSUW(mx, x operand.Op) (*avo.Instruction, error) { func PHSUBD(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PHSUBD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PHSUBD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PHSUBD", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PHSUBSW: Packed Horizontal Subtract Signed Word Integers with Signed Saturation. @@ -8098,14 +11748,21 @@ func PHSUBD(mx, x operand.Op) (*avo.Instruction, error) { func PHSUBSW(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PHSUBSW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PHSUBSW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PHSUBSW", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PHSUBW: Packed Horizontal Subtract Word Integers. @@ -8117,14 +11774,21 @@ func PHSUBSW(mx, x operand.Op) (*avo.Instruction, error) { func PHSUBW(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PHSUBW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PHSUBW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PHSUBW", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PINSRB: Insert Byte. @@ -8136,14 +11800,21 @@ func PHSUBW(mx, x operand.Op) (*avo.Instruction, error) { func PINSRB(i, mr, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsR32(mr) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PINSRB", + Operands: []operand.Op{i, mr, x}, + Inputs: []operand.Op{mr, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsImm8(i) && operand.IsM8(mr) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PINSRB", + Operands: []operand.Op{i, mr, x}, + Inputs: []operand.Op{mr, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PINSRB", - Operands: []operand.Op{i, mr, x}, - }, nil + return nil, ErrBadOperandTypes } // PINSRD: Insert Doubleword. @@ -8155,14 +11826,21 @@ func PINSRB(i, mr, x operand.Op) (*avo.Instruction, error) { func PINSRD(i, mr, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsR32(mr) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PINSRD", + Operands: []operand.Op{i, mr, x}, + Inputs: []operand.Op{mr, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsImm8(i) && operand.IsM32(mr) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PINSRD", + Operands: []operand.Op{i, mr, x}, + Inputs: []operand.Op{mr, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PINSRD", - Operands: []operand.Op{i, mr, x}, - }, nil + return nil, ErrBadOperandTypes } // PINSRQ: Insert Quadword. @@ -8174,14 +11852,21 @@ func PINSRD(i, mr, x operand.Op) (*avo.Instruction, error) { func PINSRQ(i, mr, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsR64(mr) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PINSRQ", + Operands: []operand.Op{i, mr, x}, + Inputs: []operand.Op{mr, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsImm8(i) && operand.IsM64(mr) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PINSRQ", + Operands: []operand.Op{i, mr, x}, + Inputs: []operand.Op{mr, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PINSRQ", - Operands: []operand.Op{i, mr, x}, - }, nil + return nil, ErrBadOperandTypes } // PINSRW: Insert Word. @@ -8193,14 +11878,21 @@ func PINSRQ(i, mr, x operand.Op) (*avo.Instruction, error) { func PINSRW(i, mr, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsR32(mr) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PINSRW", + Operands: []operand.Op{i, mr, x}, + Inputs: []operand.Op{mr, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsImm8(i) && operand.IsM16(mr) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PINSRW", + Operands: []operand.Op{i, mr, x}, + Inputs: []operand.Op{mr, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PINSRW", - Operands: []operand.Op{i, mr, x}, - }, nil + return nil, ErrBadOperandTypes } // PMADDUBSW: Multiply and Add Packed Signed and Unsigned Byte Integers. @@ -8212,14 +11904,21 @@ func PINSRW(i, mr, x operand.Op) (*avo.Instruction, error) { func PMADDUBSW(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PMADDUBSW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PMADDUBSW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PMADDUBSW", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PMADDWL: Multiply and Add Packed Signed Word Integers. @@ -8231,14 +11930,21 @@ func PMADDUBSW(mx, x operand.Op) (*avo.Instruction, error) { func PMADDWL(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PMADDWL", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PMADDWL", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PMADDWL", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PMAXSB: Maximum of Packed Signed Byte Integers. @@ -8250,14 +11956,21 @@ func PMADDWL(mx, x operand.Op) (*avo.Instruction, error) { func PMAXSB(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PMAXSB", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PMAXSB", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PMAXSB", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PMAXSD: Maximum of Packed Signed Doubleword Integers. @@ -8269,14 +11982,21 @@ func PMAXSB(mx, x operand.Op) (*avo.Instruction, error) { func PMAXSD(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PMAXSD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PMAXSD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PMAXSD", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PMAXSW: Maximum of Packed Signed Word Integers. @@ -8288,14 +12008,21 @@ func PMAXSD(mx, x operand.Op) (*avo.Instruction, error) { func PMAXSW(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PMAXSW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PMAXSW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PMAXSW", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PMAXUB: Maximum of Packed Unsigned Byte Integers. @@ -8307,14 +12034,21 @@ func PMAXSW(mx, x operand.Op) (*avo.Instruction, error) { func PMAXUB(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PMAXUB", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PMAXUB", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PMAXUB", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PMAXUD: Maximum of Packed Unsigned Doubleword Integers. @@ -8326,14 +12060,21 @@ func PMAXUB(mx, x operand.Op) (*avo.Instruction, error) { func PMAXUD(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PMAXUD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PMAXUD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PMAXUD", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PMAXUW: Maximum of Packed Unsigned Word Integers. @@ -8345,14 +12086,21 @@ func PMAXUD(mx, x operand.Op) (*avo.Instruction, error) { func PMAXUW(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PMAXUW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PMAXUW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PMAXUW", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PMINSB: Minimum of Packed Signed Byte Integers. @@ -8364,14 +12112,21 @@ func PMAXUW(mx, x operand.Op) (*avo.Instruction, error) { func PMINSB(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PMINSB", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PMINSB", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PMINSB", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PMINSD: Minimum of Packed Signed Doubleword Integers. @@ -8383,14 +12138,21 @@ func PMINSB(mx, x operand.Op) (*avo.Instruction, error) { func PMINSD(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PMINSD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PMINSD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PMINSD", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PMINSW: Minimum of Packed Signed Word Integers. @@ -8402,14 +12164,21 @@ func PMINSD(mx, x operand.Op) (*avo.Instruction, error) { func PMINSW(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PMINSW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PMINSW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PMINSW", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PMINUB: Minimum of Packed Unsigned Byte Integers. @@ -8421,14 +12190,21 @@ func PMINSW(mx, x operand.Op) (*avo.Instruction, error) { func PMINUB(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PMINUB", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PMINUB", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PMINUB", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PMINUD: Minimum of Packed Unsigned Doubleword Integers. @@ -8440,14 +12216,21 @@ func PMINUB(mx, x operand.Op) (*avo.Instruction, error) { func PMINUD(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PMINUD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PMINUD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PMINUD", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PMINUW: Minimum of Packed Unsigned Word Integers. @@ -8459,14 +12242,21 @@ func PMINUD(mx, x operand.Op) (*avo.Instruction, error) { func PMINUW(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PMINUW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PMINUW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PMINUW", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PMOVMSKB: Move Byte Mask. @@ -8477,13 +12267,14 @@ func PMINUW(mx, x operand.Op) (*avo.Instruction, error) { func PMOVMSKB(x, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(x) && operand.IsR32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PMOVMSKB", + Operands: []operand.Op{x, r}, + Inputs: []operand.Op{x}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "PMOVMSKB", - Operands: []operand.Op{x, r}, - }, nil + return nil, ErrBadOperandTypes } // PMOVSXBD: Move Packed Byte Integers to Doubleword Integers with Sign Extension. @@ -8495,14 +12286,21 @@ func PMOVMSKB(x, r operand.Op) (*avo.Instruction, error) { func PMOVSXBD(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PMOVSXBD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM32(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PMOVSXBD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PMOVSXBD", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PMOVSXBQ: Move Packed Byte Integers to Quadword Integers with Sign Extension. @@ -8514,14 +12312,21 @@ func PMOVSXBD(mx, x operand.Op) (*avo.Instruction, error) { func PMOVSXBQ(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PMOVSXBQ", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM16(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PMOVSXBQ", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PMOVSXBQ", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PMOVSXBW: Move Packed Byte Integers to Word Integers with Sign Extension. @@ -8533,14 +12338,21 @@ func PMOVSXBQ(mx, x operand.Op) (*avo.Instruction, error) { func PMOVSXBW(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PMOVSXBW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM64(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PMOVSXBW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PMOVSXBW", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PMOVSXDQ: Move Packed Doubleword Integers to Quadword Integers with Sign Extension. @@ -8552,14 +12364,21 @@ func PMOVSXBW(mx, x operand.Op) (*avo.Instruction, error) { func PMOVSXDQ(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PMOVSXDQ", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM64(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PMOVSXDQ", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PMOVSXDQ", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PMOVSXWD: Move Packed Word Integers to Doubleword Integers with Sign Extension. @@ -8571,14 +12390,21 @@ func PMOVSXDQ(mx, x operand.Op) (*avo.Instruction, error) { func PMOVSXWD(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PMOVSXWD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM64(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PMOVSXWD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PMOVSXWD", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PMOVSXWQ: Move Packed Word Integers to Quadword Integers with Sign Extension. @@ -8590,14 +12416,21 @@ func PMOVSXWD(mx, x operand.Op) (*avo.Instruction, error) { func PMOVSXWQ(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PMOVSXWQ", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM32(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PMOVSXWQ", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PMOVSXWQ", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PMOVZXBD: Move Packed Byte Integers to Doubleword Integers with Zero Extension. @@ -8609,14 +12442,21 @@ func PMOVSXWQ(mx, x operand.Op) (*avo.Instruction, error) { func PMOVZXBD(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PMOVZXBD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM32(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PMOVZXBD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PMOVZXBD", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PMOVZXBQ: Move Packed Byte Integers to Quadword Integers with Zero Extension. @@ -8628,14 +12468,21 @@ func PMOVZXBD(mx, x operand.Op) (*avo.Instruction, error) { func PMOVZXBQ(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PMOVZXBQ", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM16(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PMOVZXBQ", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PMOVZXBQ", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PMOVZXBW: Move Packed Byte Integers to Word Integers with Zero Extension. @@ -8647,14 +12494,21 @@ func PMOVZXBQ(mx, x operand.Op) (*avo.Instruction, error) { func PMOVZXBW(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PMOVZXBW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM64(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PMOVZXBW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PMOVZXBW", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PMOVZXDQ: Move Packed Doubleword Integers to Quadword Integers with Zero Extension. @@ -8666,14 +12520,21 @@ func PMOVZXBW(mx, x operand.Op) (*avo.Instruction, error) { func PMOVZXDQ(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PMOVZXDQ", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM64(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PMOVZXDQ", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PMOVZXDQ", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PMOVZXWD: Move Packed Word Integers to Doubleword Integers with Zero Extension. @@ -8685,14 +12546,21 @@ func PMOVZXDQ(mx, x operand.Op) (*avo.Instruction, error) { func PMOVZXWD(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PMOVZXWD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM64(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PMOVZXWD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PMOVZXWD", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PMOVZXWQ: Move Packed Word Integers to Quadword Integers with Zero Extension. @@ -8704,14 +12572,21 @@ func PMOVZXWD(mx, x operand.Op) (*avo.Instruction, error) { func PMOVZXWQ(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PMOVZXWQ", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM32(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PMOVZXWQ", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PMOVZXWQ", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PMULDQ: Multiply Packed Signed Doubleword Integers and Store Quadword Result. @@ -8723,14 +12598,21 @@ func PMOVZXWQ(mx, x operand.Op) (*avo.Instruction, error) { func PMULDQ(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PMULDQ", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PMULDQ", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PMULDQ", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PMULHRSW: Packed Multiply Signed Word Integers and Store High Result with Round and Scale. @@ -8742,14 +12624,21 @@ func PMULDQ(mx, x operand.Op) (*avo.Instruction, error) { func PMULHRSW(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PMULHRSW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PMULHRSW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PMULHRSW", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PMULHUW: Multiply Packed Unsigned Word Integers and Store High Result. @@ -8761,14 +12650,21 @@ func PMULHRSW(mx, x operand.Op) (*avo.Instruction, error) { func PMULHUW(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PMULHUW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PMULHUW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PMULHUW", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PMULHW: Multiply Packed Signed Word Integers and Store High Result. @@ -8780,14 +12676,21 @@ func PMULHUW(mx, x operand.Op) (*avo.Instruction, error) { func PMULHW(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PMULHW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PMULHW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PMULHW", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PMULLD: Multiply Packed Signed Doubleword Integers and Store Low Result. @@ -8799,14 +12702,21 @@ func PMULHW(mx, x operand.Op) (*avo.Instruction, error) { func PMULLD(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PMULLD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PMULLD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PMULLD", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PMULLW: Multiply Packed Signed Word Integers and Store Low Result. @@ -8818,14 +12728,21 @@ func PMULLD(mx, x operand.Op) (*avo.Instruction, error) { func PMULLW(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PMULLW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PMULLW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PMULLW", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PMULULQ: Multiply Packed Unsigned Doubleword Integers. @@ -8837,14 +12754,21 @@ func PMULLW(mx, x operand.Op) (*avo.Instruction, error) { func PMULULQ(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PMULULQ", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PMULULQ", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PMULULQ", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // POPCNTL: Count of Number of Bits Set to 1. @@ -8856,14 +12780,21 @@ func PMULULQ(mx, x operand.Op) (*avo.Instruction, error) { func POPCNTL(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR32(mr) && operand.IsR32(r): + return &avo.Instruction{ + Opcode: "POPCNTL", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM32(mr) && operand.IsR32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "POPCNTL", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "POPCNTL", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // POPCNTQ: Count of Number of Bits Set to 1. @@ -8875,14 +12806,21 @@ func POPCNTL(mr, r operand.Op) (*avo.Instruction, error) { func POPCNTQ(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR64(mr) && operand.IsR64(r): + return &avo.Instruction{ + Opcode: "POPCNTQ", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM64(mr) && operand.IsR64(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "POPCNTQ", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "POPCNTQ", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // POPCNTW: Count of Number of Bits Set to 1. @@ -8894,14 +12832,21 @@ func POPCNTQ(mr, r operand.Op) (*avo.Instruction, error) { func POPCNTW(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR16(mr) && operand.IsR16(r): + return &avo.Instruction{ + Opcode: "POPCNTW", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM16(mr) && operand.IsR16(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "POPCNTW", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "POPCNTW", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // POPQ: Pop a Value from the Stack. @@ -8913,14 +12858,21 @@ func POPCNTW(mr, r operand.Op) (*avo.Instruction, error) { func POPQ(mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "POPQ", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsM64(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "POPQ", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "POPQ", - Operands: []operand.Op{mr}, - }, nil + return nil, ErrBadOperandTypes } // POPW: Pop a Value from the Stack. @@ -8932,14 +12884,21 @@ func POPQ(mr operand.Op) (*avo.Instruction, error) { func POPW(mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsR16(mr): + return &avo.Instruction{ + Opcode: "POPW", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsM16(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "POPW", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "POPW", - Operands: []operand.Op{mr}, - }, nil + return nil, ErrBadOperandTypes } // POR: Packed Bitwise Logical OR. @@ -8951,14 +12910,21 @@ func POPW(mr operand.Op) (*avo.Instruction, error) { func POR(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "POR", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "POR", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "POR", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PREFETCHNTA: Prefetch Data Into Caches using NTA Hint. @@ -8969,13 +12935,14 @@ func POR(mx, x operand.Op) (*avo.Instruction, error) { func PREFETCHNTA(m operand.Op) (*avo.Instruction, error) { switch { case operand.IsM8(m): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PREFETCHNTA", + Operands: []operand.Op{m}, + Inputs: []operand.Op{m}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "PREFETCHNTA", - Operands: []operand.Op{m}, - }, nil + return nil, ErrBadOperandTypes } // PREFETCHT0: Prefetch Data Into Caches using T0 Hint. @@ -8986,13 +12953,14 @@ func PREFETCHNTA(m operand.Op) (*avo.Instruction, error) { func PREFETCHT0(m operand.Op) (*avo.Instruction, error) { switch { case operand.IsM8(m): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PREFETCHT0", + Operands: []operand.Op{m}, + Inputs: []operand.Op{m}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "PREFETCHT0", - Operands: []operand.Op{m}, - }, nil + return nil, ErrBadOperandTypes } // PREFETCHT1: Prefetch Data Into Caches using T1 Hint. @@ -9003,13 +12971,14 @@ func PREFETCHT0(m operand.Op) (*avo.Instruction, error) { func PREFETCHT1(m operand.Op) (*avo.Instruction, error) { switch { case operand.IsM8(m): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PREFETCHT1", + Operands: []operand.Op{m}, + Inputs: []operand.Op{m}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "PREFETCHT1", - Operands: []operand.Op{m}, - }, nil + return nil, ErrBadOperandTypes } // PREFETCHT2: Prefetch Data Into Caches using T2 Hint. @@ -9020,13 +12989,14 @@ func PREFETCHT1(m operand.Op) (*avo.Instruction, error) { func PREFETCHT2(m operand.Op) (*avo.Instruction, error) { switch { case operand.IsM8(m): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PREFETCHT2", + Operands: []operand.Op{m}, + Inputs: []operand.Op{m}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "PREFETCHT2", - Operands: []operand.Op{m}, - }, nil + return nil, ErrBadOperandTypes } // PSADBW: Compute Sum of Absolute Differences. @@ -9038,14 +13008,21 @@ func PREFETCHT2(m operand.Op) (*avo.Instruction, error) { func PSADBW(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PSADBW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PSADBW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PSADBW", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PSHUFB: Packed Shuffle Bytes. @@ -9057,14 +13034,21 @@ func PSADBW(mx, x operand.Op) (*avo.Instruction, error) { func PSHUFB(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PSHUFB", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PSHUFB", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PSHUFB", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PSHUFD: Shuffle Packed Doublewords. @@ -9076,14 +13060,21 @@ func PSHUFB(mx, x operand.Op) (*avo.Instruction, error) { func PSHUFD(i, mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PSHUFD", + Operands: []operand.Op{i, mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil case operand.IsImm8(i) && operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PSHUFD", + Operands: []operand.Op{i, mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PSHUFD", - Operands: []operand.Op{i, mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PSHUFHW: Shuffle Packed High Words. @@ -9095,14 +13086,21 @@ func PSHUFD(i, mx, x operand.Op) (*avo.Instruction, error) { func PSHUFHW(i, mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PSHUFHW", + Operands: []operand.Op{i, mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsImm8(i) && operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PSHUFHW", + Operands: []operand.Op{i, mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PSHUFHW", - Operands: []operand.Op{i, mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PSHUFL: Shuffle Packed Doublewords. @@ -9114,14 +13112,21 @@ func PSHUFHW(i, mx, x operand.Op) (*avo.Instruction, error) { func PSHUFL(i, mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PSHUFL", + Operands: []operand.Op{i, mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil case operand.IsImm8(i) && operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PSHUFL", + Operands: []operand.Op{i, mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PSHUFL", - Operands: []operand.Op{i, mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PSHUFLW: Shuffle Packed Low Words. @@ -9133,14 +13138,21 @@ func PSHUFL(i, mx, x operand.Op) (*avo.Instruction, error) { func PSHUFLW(i, mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PSHUFLW", + Operands: []operand.Op{i, mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsImm8(i) && operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PSHUFLW", + Operands: []operand.Op{i, mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PSHUFLW", - Operands: []operand.Op{i, mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PSIGNB: Packed Sign of Byte Integers. @@ -9152,14 +13164,21 @@ func PSHUFLW(i, mx, x operand.Op) (*avo.Instruction, error) { func PSIGNB(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PSIGNB", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PSIGNB", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PSIGNB", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PSIGND: Packed Sign of Doubleword Integers. @@ -9171,14 +13190,21 @@ func PSIGNB(mx, x operand.Op) (*avo.Instruction, error) { func PSIGND(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PSIGND", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PSIGND", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PSIGND", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PSIGNW: Packed Sign of Word Integers. @@ -9190,14 +13216,21 @@ func PSIGND(mx, x operand.Op) (*avo.Instruction, error) { func PSIGNW(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PSIGNW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PSIGNW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PSIGNW", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PSLLDQ: Shift Packed Double Quadword Left Logical. @@ -9208,13 +13241,14 @@ func PSIGNW(mx, x operand.Op) (*avo.Instruction, error) { func PSLLDQ(i, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PSLLDQ", + Operands: []operand.Op{i, x}, + Inputs: []operand.Op{x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PSLLDQ", - Operands: []operand.Op{i, x}, - }, nil + return nil, ErrBadOperandTypes } // PSLLL: Shift Packed Doubleword Data Left Logical. @@ -9227,15 +13261,28 @@ func PSLLDQ(i, x operand.Op) (*avo.Instruction, error) { func PSLLL(imx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(imx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PSLLL", + Operands: []operand.Op{imx, x}, + Inputs: []operand.Op{x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsXmm(imx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PSLLL", + Operands: []operand.Op{imx, x}, + Inputs: []operand.Op{imx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(imx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PSLLL", + Operands: []operand.Op{imx, x}, + Inputs: []operand.Op{imx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PSLLL", - Operands: []operand.Op{imx, x}, - }, nil + return nil, ErrBadOperandTypes } // PSLLO: Shift Packed Double Quadword Left Logical. @@ -9246,13 +13293,14 @@ func PSLLL(imx, x operand.Op) (*avo.Instruction, error) { func PSLLO(i, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PSLLO", + Operands: []operand.Op{i, x}, + Inputs: []operand.Op{x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PSLLO", - Operands: []operand.Op{i, x}, - }, nil + return nil, ErrBadOperandTypes } // PSLLQ: Shift Packed Quadword Data Left Logical. @@ -9265,15 +13313,28 @@ func PSLLO(i, x operand.Op) (*avo.Instruction, error) { func PSLLQ(imx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(imx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PSLLQ", + Operands: []operand.Op{imx, x}, + Inputs: []operand.Op{x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsXmm(imx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PSLLQ", + Operands: []operand.Op{imx, x}, + Inputs: []operand.Op{imx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(imx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PSLLQ", + Operands: []operand.Op{imx, x}, + Inputs: []operand.Op{imx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PSLLQ", - Operands: []operand.Op{imx, x}, - }, nil + return nil, ErrBadOperandTypes } // PSLLW: Shift Packed Word Data Left Logical. @@ -9286,15 +13347,28 @@ func PSLLQ(imx, x operand.Op) (*avo.Instruction, error) { func PSLLW(imx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(imx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PSLLW", + Operands: []operand.Op{imx, x}, + Inputs: []operand.Op{x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsXmm(imx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PSLLW", + Operands: []operand.Op{imx, x}, + Inputs: []operand.Op{imx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(imx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PSLLW", + Operands: []operand.Op{imx, x}, + Inputs: []operand.Op{imx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PSLLW", - Operands: []operand.Op{imx, x}, - }, nil + return nil, ErrBadOperandTypes } // PSRAL: Shift Packed Doubleword Data Right Arithmetic. @@ -9307,15 +13381,28 @@ func PSLLW(imx, x operand.Op) (*avo.Instruction, error) { func PSRAL(imx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(imx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PSRAL", + Operands: []operand.Op{imx, x}, + Inputs: []operand.Op{x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsXmm(imx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PSRAL", + Operands: []operand.Op{imx, x}, + Inputs: []operand.Op{imx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(imx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PSRAL", + Operands: []operand.Op{imx, x}, + Inputs: []operand.Op{imx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PSRAL", - Operands: []operand.Op{imx, x}, - }, nil + return nil, ErrBadOperandTypes } // PSRAW: Shift Packed Word Data Right Arithmetic. @@ -9328,15 +13415,28 @@ func PSRAL(imx, x operand.Op) (*avo.Instruction, error) { func PSRAW(imx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(imx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PSRAW", + Operands: []operand.Op{imx, x}, + Inputs: []operand.Op{x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsXmm(imx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PSRAW", + Operands: []operand.Op{imx, x}, + Inputs: []operand.Op{imx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(imx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PSRAW", + Operands: []operand.Op{imx, x}, + Inputs: []operand.Op{imx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PSRAW", - Operands: []operand.Op{imx, x}, - }, nil + return nil, ErrBadOperandTypes } // PSRLDQ: Shift Packed Double Quadword Right Logical. @@ -9347,13 +13447,14 @@ func PSRAW(imx, x operand.Op) (*avo.Instruction, error) { func PSRLDQ(i, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PSRLDQ", + Operands: []operand.Op{i, x}, + Inputs: []operand.Op{x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PSRLDQ", - Operands: []operand.Op{i, x}, - }, nil + return nil, ErrBadOperandTypes } // PSRLL: Shift Packed Doubleword Data Right Logical. @@ -9366,15 +13467,28 @@ func PSRLDQ(i, x operand.Op) (*avo.Instruction, error) { func PSRLL(imx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(imx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PSRLL", + Operands: []operand.Op{imx, x}, + Inputs: []operand.Op{x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsXmm(imx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PSRLL", + Operands: []operand.Op{imx, x}, + Inputs: []operand.Op{imx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(imx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PSRLL", + Operands: []operand.Op{imx, x}, + Inputs: []operand.Op{imx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PSRLL", - Operands: []operand.Op{imx, x}, - }, nil + return nil, ErrBadOperandTypes } // PSRLO: Shift Packed Double Quadword Right Logical. @@ -9385,13 +13499,14 @@ func PSRLL(imx, x operand.Op) (*avo.Instruction, error) { func PSRLO(i, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PSRLO", + Operands: []operand.Op{i, x}, + Inputs: []operand.Op{x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PSRLO", - Operands: []operand.Op{i, x}, - }, nil + return nil, ErrBadOperandTypes } // PSRLQ: Shift Packed Quadword Data Right Logical. @@ -9404,15 +13519,28 @@ func PSRLO(i, x operand.Op) (*avo.Instruction, error) { func PSRLQ(imx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(imx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PSRLQ", + Operands: []operand.Op{imx, x}, + Inputs: []operand.Op{x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsXmm(imx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PSRLQ", + Operands: []operand.Op{imx, x}, + Inputs: []operand.Op{imx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(imx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PSRLQ", + Operands: []operand.Op{imx, x}, + Inputs: []operand.Op{imx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PSRLQ", - Operands: []operand.Op{imx, x}, - }, nil + return nil, ErrBadOperandTypes } // PSRLW: Shift Packed Word Data Right Logical. @@ -9425,15 +13553,28 @@ func PSRLQ(imx, x operand.Op) (*avo.Instruction, error) { func PSRLW(imx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(imx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PSRLW", + Operands: []operand.Op{imx, x}, + Inputs: []operand.Op{x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsXmm(imx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PSRLW", + Operands: []operand.Op{imx, x}, + Inputs: []operand.Op{imx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(imx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PSRLW", + Operands: []operand.Op{imx, x}, + Inputs: []operand.Op{imx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PSRLW", - Operands: []operand.Op{imx, x}, - }, nil + return nil, ErrBadOperandTypes } // PSUBB: Subtract Packed Byte Integers. @@ -9445,14 +13586,21 @@ func PSRLW(imx, x operand.Op) (*avo.Instruction, error) { func PSUBB(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PSUBB", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PSUBB", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PSUBB", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PSUBL: Subtract Packed Doubleword Integers. @@ -9464,14 +13612,21 @@ func PSUBB(mx, x operand.Op) (*avo.Instruction, error) { func PSUBL(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PSUBL", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PSUBL", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PSUBL", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PSUBQ: Subtract Packed Quadword Integers. @@ -9483,14 +13638,21 @@ func PSUBL(mx, x operand.Op) (*avo.Instruction, error) { func PSUBQ(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PSUBQ", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PSUBQ", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PSUBQ", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PSUBSB: Subtract Packed Signed Byte Integers with Signed Saturation. @@ -9502,14 +13664,21 @@ func PSUBQ(mx, x operand.Op) (*avo.Instruction, error) { func PSUBSB(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PSUBSB", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PSUBSB", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PSUBSB", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PSUBSW: Subtract Packed Signed Word Integers with Signed Saturation. @@ -9521,14 +13690,21 @@ func PSUBSB(mx, x operand.Op) (*avo.Instruction, error) { func PSUBSW(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PSUBSW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PSUBSW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PSUBSW", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PSUBUSB: Subtract Packed Unsigned Byte Integers with Unsigned Saturation. @@ -9540,14 +13716,21 @@ func PSUBSW(mx, x operand.Op) (*avo.Instruction, error) { func PSUBUSB(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PSUBUSB", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PSUBUSB", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PSUBUSB", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PSUBUSW: Subtract Packed Unsigned Word Integers with Unsigned Saturation. @@ -9559,14 +13742,21 @@ func PSUBUSB(mx, x operand.Op) (*avo.Instruction, error) { func PSUBUSW(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PSUBUSW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PSUBUSW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PSUBUSW", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PSUBW: Subtract Packed Word Integers. @@ -9578,14 +13768,21 @@ func PSUBUSW(mx, x operand.Op) (*avo.Instruction, error) { func PSUBW(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PSUBW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PSUBW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PSUBW", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PTEST: Packed Logical Compare. @@ -9597,14 +13794,21 @@ func PSUBW(mx, x operand.Op) (*avo.Instruction, error) { func PTEST(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PTEST", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PTEST", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "PTEST", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PUNPCKHBW: Unpack and Interleave High-Order Bytes into Words. @@ -9616,14 +13820,21 @@ func PTEST(mx, x operand.Op) (*avo.Instruction, error) { func PUNPCKHBW(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PUNPCKHBW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PUNPCKHBW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PUNPCKHBW", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PUNPCKHLQ: Unpack and Interleave High-Order Doublewords into Quadwords. @@ -9635,14 +13846,21 @@ func PUNPCKHBW(mx, x operand.Op) (*avo.Instruction, error) { func PUNPCKHLQ(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PUNPCKHLQ", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PUNPCKHLQ", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PUNPCKHLQ", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PUNPCKHQDQ: Unpack and Interleave High-Order Quadwords into Double Quadwords. @@ -9654,14 +13872,21 @@ func PUNPCKHLQ(mx, x operand.Op) (*avo.Instruction, error) { func PUNPCKHQDQ(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PUNPCKHQDQ", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PUNPCKHQDQ", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PUNPCKHQDQ", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PUNPCKHWL: Unpack and Interleave High-Order Words into Doublewords. @@ -9673,14 +13898,21 @@ func PUNPCKHQDQ(mx, x operand.Op) (*avo.Instruction, error) { func PUNPCKHWL(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PUNPCKHWL", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PUNPCKHWL", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PUNPCKHWL", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PUNPCKLBW: Unpack and Interleave Low-Order Bytes into Words. @@ -9692,14 +13924,21 @@ func PUNPCKHWL(mx, x operand.Op) (*avo.Instruction, error) { func PUNPCKLBW(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PUNPCKLBW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PUNPCKLBW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PUNPCKLBW", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PUNPCKLLQ: Unpack and Interleave Low-Order Doublewords into Quadwords. @@ -9711,14 +13950,21 @@ func PUNPCKLBW(mx, x operand.Op) (*avo.Instruction, error) { func PUNPCKLLQ(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PUNPCKLLQ", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PUNPCKLLQ", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PUNPCKLLQ", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PUNPCKLQDQ: Unpack and Interleave Low-Order Quadwords into Double Quadwords. @@ -9730,14 +13976,21 @@ func PUNPCKLLQ(mx, x operand.Op) (*avo.Instruction, error) { func PUNPCKLQDQ(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PUNPCKLQDQ", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PUNPCKLQDQ", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PUNPCKLQDQ", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PUNPCKLWL: Unpack and Interleave Low-Order Words into Doublewords. @@ -9749,14 +14002,21 @@ func PUNPCKLQDQ(mx, x operand.Op) (*avo.Instruction, error) { func PUNPCKLWL(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PUNPCKLWL", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PUNPCKLWL", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PUNPCKLWL", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // PUSHQ: Push Value Onto the Stack. @@ -9770,16 +14030,35 @@ func PUNPCKLWL(mx, x operand.Op) (*avo.Instruction, error) { func PUSHQ(imr operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(imr): + return &avo.Instruction{ + Opcode: "PUSHQ", + Operands: []operand.Op{imr}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + }, nil case operand.IsImm32(imr): + return &avo.Instruction{ + Opcode: "PUSHQ", + Operands: []operand.Op{imr}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + }, nil case operand.IsR64(imr): + return &avo.Instruction{ + Opcode: "PUSHQ", + Operands: []operand.Op{imr}, + Inputs: []operand.Op{imr}, + Outputs: []operand.Op{}, + }, nil case operand.IsM64(imr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PUSHQ", + Operands: []operand.Op{imr}, + Inputs: []operand.Op{imr}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "PUSHQ", - Operands: []operand.Op{imr}, - }, nil + return nil, ErrBadOperandTypes } // PUSHW: Push Value Onto the Stack. @@ -9791,14 +14070,21 @@ func PUSHQ(imr operand.Op) (*avo.Instruction, error) { func PUSHW(mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsR16(mr): + return &avo.Instruction{ + Opcode: "PUSHW", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{}, + }, nil case operand.IsM16(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PUSHW", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "PUSHW", - Operands: []operand.Op{mr}, - }, nil + return nil, ErrBadOperandTypes } // PXOR: Packed Bitwise Logical Exclusive OR. @@ -9810,14 +14096,21 @@ func PUSHW(mr operand.Op) (*avo.Instruction, error) { func PXOR(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "PXOR", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "PXOR", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "PXOR", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // RCLB: Rotate Left through Carry Flag. @@ -9833,18 +14126,49 @@ func PXOR(mx, x operand.Op) (*avo.Instruction, error) { func RCLB(ci, mr operand.Op) (*avo.Instruction, error) { switch { case operand.Is1(ci) && operand.IsR8(mr): + return &avo.Instruction{ + Opcode: "RCLB", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ci) && operand.IsR8(mr): + return &avo.Instruction{ + Opcode: "RCLB", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsCl(ci) && operand.IsR8(mr): + return &avo.Instruction{ + Opcode: "RCLB", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{ci, mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.Is1(ci) && operand.IsM8(mr): + return &avo.Instruction{ + Opcode: "RCLB", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ci) && operand.IsM8(mr): + return &avo.Instruction{ + Opcode: "RCLB", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsCl(ci) && operand.IsM8(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "RCLB", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{ci, mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "RCLB", - Operands: []operand.Op{ci, mr}, - }, nil + return nil, ErrBadOperandTypes } // RCLL: Rotate Left through Carry Flag. @@ -9860,18 +14184,49 @@ func RCLB(ci, mr operand.Op) (*avo.Instruction, error) { func RCLL(ci, mr operand.Op) (*avo.Instruction, error) { switch { case operand.Is1(ci) && operand.IsR32(mr): + return &avo.Instruction{ + Opcode: "RCLL", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ci) && operand.IsR32(mr): + return &avo.Instruction{ + Opcode: "RCLL", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsCl(ci) && operand.IsR32(mr): + return &avo.Instruction{ + Opcode: "RCLL", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{ci, mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.Is1(ci) && operand.IsM32(mr): + return &avo.Instruction{ + Opcode: "RCLL", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ci) && operand.IsM32(mr): + return &avo.Instruction{ + Opcode: "RCLL", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsCl(ci) && operand.IsM32(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "RCLL", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{ci, mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "RCLL", - Operands: []operand.Op{ci, mr}, - }, nil + return nil, ErrBadOperandTypes } // RCLQ: Rotate Left through Carry Flag. @@ -9887,18 +14242,49 @@ func RCLL(ci, mr operand.Op) (*avo.Instruction, error) { func RCLQ(ci, mr operand.Op) (*avo.Instruction, error) { switch { case operand.Is1(ci) && operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "RCLQ", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ci) && operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "RCLQ", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsCl(ci) && operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "RCLQ", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{ci, mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.Is1(ci) && operand.IsM64(mr): + return &avo.Instruction{ + Opcode: "RCLQ", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ci) && operand.IsM64(mr): + return &avo.Instruction{ + Opcode: "RCLQ", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsCl(ci) && operand.IsM64(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "RCLQ", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{ci, mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "RCLQ", - Operands: []operand.Op{ci, mr}, - }, nil + return nil, ErrBadOperandTypes } // RCLW: Rotate Left through Carry Flag. @@ -9914,18 +14300,49 @@ func RCLQ(ci, mr operand.Op) (*avo.Instruction, error) { func RCLW(ci, mr operand.Op) (*avo.Instruction, error) { switch { case operand.Is1(ci) && operand.IsR16(mr): + return &avo.Instruction{ + Opcode: "RCLW", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ci) && operand.IsR16(mr): + return &avo.Instruction{ + Opcode: "RCLW", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsCl(ci) && operand.IsR16(mr): + return &avo.Instruction{ + Opcode: "RCLW", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{ci, mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.Is1(ci) && operand.IsM16(mr): + return &avo.Instruction{ + Opcode: "RCLW", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ci) && operand.IsM16(mr): + return &avo.Instruction{ + Opcode: "RCLW", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsCl(ci) && operand.IsM16(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "RCLW", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{ci, mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "RCLW", - Operands: []operand.Op{ci, mr}, - }, nil + return nil, ErrBadOperandTypes } // RCPPS: Compute Approximate Reciprocals of Packed Single-Precision Floating-Point Values. @@ -9937,14 +14354,21 @@ func RCLW(ci, mr operand.Op) (*avo.Instruction, error) { func RCPPS(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "RCPPS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "RCPPS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "RCPPS", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // RCPSS: Compute Approximate Reciprocal of Scalar Single-Precision Floating-Point Values. @@ -9956,14 +14380,21 @@ func RCPPS(mx, x operand.Op) (*avo.Instruction, error) { func RCPSS(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "RCPSS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM32(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "RCPSS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "RCPSS", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // RCRB: Rotate Right through Carry Flag. @@ -9979,18 +14410,49 @@ func RCPSS(mx, x operand.Op) (*avo.Instruction, error) { func RCRB(ci, mr operand.Op) (*avo.Instruction, error) { switch { case operand.Is1(ci) && operand.IsR8(mr): + return &avo.Instruction{ + Opcode: "RCRB", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ci) && operand.IsR8(mr): + return &avo.Instruction{ + Opcode: "RCRB", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsCl(ci) && operand.IsR8(mr): + return &avo.Instruction{ + Opcode: "RCRB", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{ci, mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.Is1(ci) && operand.IsM8(mr): + return &avo.Instruction{ + Opcode: "RCRB", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ci) && operand.IsM8(mr): + return &avo.Instruction{ + Opcode: "RCRB", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsCl(ci) && operand.IsM8(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "RCRB", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{ci, mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "RCRB", - Operands: []operand.Op{ci, mr}, - }, nil + return nil, ErrBadOperandTypes } // RCRL: Rotate Right through Carry Flag. @@ -10006,18 +14468,49 @@ func RCRB(ci, mr operand.Op) (*avo.Instruction, error) { func RCRL(ci, mr operand.Op) (*avo.Instruction, error) { switch { case operand.Is1(ci) && operand.IsR32(mr): + return &avo.Instruction{ + Opcode: "RCRL", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ci) && operand.IsR32(mr): + return &avo.Instruction{ + Opcode: "RCRL", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsCl(ci) && operand.IsR32(mr): + return &avo.Instruction{ + Opcode: "RCRL", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{ci, mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.Is1(ci) && operand.IsM32(mr): + return &avo.Instruction{ + Opcode: "RCRL", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ci) && operand.IsM32(mr): + return &avo.Instruction{ + Opcode: "RCRL", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsCl(ci) && operand.IsM32(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "RCRL", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{ci, mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "RCRL", - Operands: []operand.Op{ci, mr}, - }, nil + return nil, ErrBadOperandTypes } // RCRQ: Rotate Right through Carry Flag. @@ -10033,18 +14526,49 @@ func RCRL(ci, mr operand.Op) (*avo.Instruction, error) { func RCRQ(ci, mr operand.Op) (*avo.Instruction, error) { switch { case operand.Is1(ci) && operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "RCRQ", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ci) && operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "RCRQ", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsCl(ci) && operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "RCRQ", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{ci, mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.Is1(ci) && operand.IsM64(mr): + return &avo.Instruction{ + Opcode: "RCRQ", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ci) && operand.IsM64(mr): + return &avo.Instruction{ + Opcode: "RCRQ", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsCl(ci) && operand.IsM64(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "RCRQ", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{ci, mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "RCRQ", - Operands: []operand.Op{ci, mr}, - }, nil + return nil, ErrBadOperandTypes } // RCRW: Rotate Right through Carry Flag. @@ -10060,18 +14584,49 @@ func RCRQ(ci, mr operand.Op) (*avo.Instruction, error) { func RCRW(ci, mr operand.Op) (*avo.Instruction, error) { switch { case operand.Is1(ci) && operand.IsR16(mr): + return &avo.Instruction{ + Opcode: "RCRW", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ci) && operand.IsR16(mr): + return &avo.Instruction{ + Opcode: "RCRW", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsCl(ci) && operand.IsR16(mr): + return &avo.Instruction{ + Opcode: "RCRW", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{ci, mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.Is1(ci) && operand.IsM16(mr): + return &avo.Instruction{ + Opcode: "RCRW", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ci) && operand.IsM16(mr): + return &avo.Instruction{ + Opcode: "RCRW", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsCl(ci) && operand.IsM16(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "RCRW", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{ci, mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "RCRW", - Operands: []operand.Op{ci, mr}, - }, nil + return nil, ErrBadOperandTypes } // RDRANDL: Read Random Number. @@ -10082,13 +14637,14 @@ func RCRW(ci, mr operand.Op) (*avo.Instruction, error) { func RDRANDL(r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "RDRANDL", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "RDRANDL", - Operands: []operand.Op{r}, - }, nil + return nil, ErrBadOperandTypes } // RDRANDQ: Read Random Number. @@ -10099,13 +14655,14 @@ func RDRANDL(r operand.Op) (*avo.Instruction, error) { func RDRANDQ(r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR64(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "RDRANDQ", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "RDRANDQ", - Operands: []operand.Op{r}, - }, nil + return nil, ErrBadOperandTypes } // RDRANDW: Read Random Number. @@ -10116,13 +14673,14 @@ func RDRANDQ(r operand.Op) (*avo.Instruction, error) { func RDRANDW(r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR16(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "RDRANDW", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "RDRANDW", - Operands: []operand.Op{r}, - }, nil + return nil, ErrBadOperandTypes } // RDSEEDL: Read Random SEED. @@ -10133,13 +14691,14 @@ func RDRANDW(r operand.Op) (*avo.Instruction, error) { func RDSEEDL(r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "RDSEEDL", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "RDSEEDL", - Operands: []operand.Op{r}, - }, nil + return nil, ErrBadOperandTypes } // RDSEEDQ: Read Random SEED. @@ -10150,13 +14709,14 @@ func RDSEEDL(r operand.Op) (*avo.Instruction, error) { func RDSEEDQ(r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR64(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "RDSEEDQ", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "RDSEEDQ", - Operands: []operand.Op{r}, - }, nil + return nil, ErrBadOperandTypes } // RDSEEDW: Read Random SEED. @@ -10167,13 +14727,14 @@ func RDSEEDQ(r operand.Op) (*avo.Instruction, error) { func RDSEEDW(r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR16(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "RDSEEDW", + Operands: []operand.Op{r}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "RDSEEDW", - Operands: []operand.Op{r}, - }, nil + return nil, ErrBadOperandTypes } // RDTSC: Read Time-Stamp Counter. @@ -10185,6 +14746,8 @@ func RDTSC() (*avo.Instruction, error) { return &avo.Instruction{ Opcode: "RDTSC", Operands: nil, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, }, nil } @@ -10197,6 +14760,8 @@ func RDTSCP() (*avo.Instruction, error) { return &avo.Instruction{ Opcode: "RDTSCP", Operands: nil, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, }, nil } @@ -10209,6 +14774,8 @@ func RET() (*avo.Instruction, error) { return &avo.Instruction{ Opcode: "RET", Operands: nil, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, }, nil } @@ -10220,13 +14787,14 @@ func RET() (*avo.Instruction, error) { func RETFL(i operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm16(i): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "RETFL", + Operands: []operand.Op{i}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "RETFL", - Operands: []operand.Op{i}, - }, nil + return nil, ErrBadOperandTypes } // RETFQ: Return from Procedure. @@ -10237,13 +14805,14 @@ func RETFL(i operand.Op) (*avo.Instruction, error) { func RETFQ(i operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm16(i): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "RETFQ", + Operands: []operand.Op{i}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "RETFQ", - Operands: []operand.Op{i}, - }, nil + return nil, ErrBadOperandTypes } // RETFW: Return from Procedure. @@ -10254,13 +14823,14 @@ func RETFQ(i operand.Op) (*avo.Instruction, error) { func RETFW(i operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm16(i): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "RETFW", + Operands: []operand.Op{i}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "RETFW", - Operands: []operand.Op{i}, - }, nil + return nil, ErrBadOperandTypes } // ROLB: Rotate Left. @@ -10276,18 +14846,49 @@ func RETFW(i operand.Op) (*avo.Instruction, error) { func ROLB(ci, mr operand.Op) (*avo.Instruction, error) { switch { case operand.Is1(ci) && operand.IsR8(mr): + return &avo.Instruction{ + Opcode: "ROLB", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ci) && operand.IsR8(mr): + return &avo.Instruction{ + Opcode: "ROLB", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsCl(ci) && operand.IsR8(mr): + return &avo.Instruction{ + Opcode: "ROLB", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{ci, mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.Is1(ci) && operand.IsM8(mr): + return &avo.Instruction{ + Opcode: "ROLB", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ci) && operand.IsM8(mr): + return &avo.Instruction{ + Opcode: "ROLB", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsCl(ci) && operand.IsM8(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "ROLB", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{ci, mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "ROLB", - Operands: []operand.Op{ci, mr}, - }, nil + return nil, ErrBadOperandTypes } // ROLL: Rotate Left. @@ -10303,18 +14904,49 @@ func ROLB(ci, mr operand.Op) (*avo.Instruction, error) { func ROLL(ci, mr operand.Op) (*avo.Instruction, error) { switch { case operand.Is1(ci) && operand.IsR32(mr): + return &avo.Instruction{ + Opcode: "ROLL", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ci) && operand.IsR32(mr): + return &avo.Instruction{ + Opcode: "ROLL", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsCl(ci) && operand.IsR32(mr): + return &avo.Instruction{ + Opcode: "ROLL", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{ci, mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.Is1(ci) && operand.IsM32(mr): + return &avo.Instruction{ + Opcode: "ROLL", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ci) && operand.IsM32(mr): + return &avo.Instruction{ + Opcode: "ROLL", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsCl(ci) && operand.IsM32(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "ROLL", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{ci, mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "ROLL", - Operands: []operand.Op{ci, mr}, - }, nil + return nil, ErrBadOperandTypes } // ROLQ: Rotate Left. @@ -10330,18 +14962,49 @@ func ROLL(ci, mr operand.Op) (*avo.Instruction, error) { func ROLQ(ci, mr operand.Op) (*avo.Instruction, error) { switch { case operand.Is1(ci) && operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "ROLQ", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ci) && operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "ROLQ", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsCl(ci) && operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "ROLQ", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{ci, mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.Is1(ci) && operand.IsM64(mr): + return &avo.Instruction{ + Opcode: "ROLQ", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ci) && operand.IsM64(mr): + return &avo.Instruction{ + Opcode: "ROLQ", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsCl(ci) && operand.IsM64(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "ROLQ", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{ci, mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "ROLQ", - Operands: []operand.Op{ci, mr}, - }, nil + return nil, ErrBadOperandTypes } // ROLW: Rotate Left. @@ -10357,18 +15020,49 @@ func ROLQ(ci, mr operand.Op) (*avo.Instruction, error) { func ROLW(ci, mr operand.Op) (*avo.Instruction, error) { switch { case operand.Is1(ci) && operand.IsR16(mr): + return &avo.Instruction{ + Opcode: "ROLW", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ci) && operand.IsR16(mr): + return &avo.Instruction{ + Opcode: "ROLW", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsCl(ci) && operand.IsR16(mr): + return &avo.Instruction{ + Opcode: "ROLW", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{ci, mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.Is1(ci) && operand.IsM16(mr): + return &avo.Instruction{ + Opcode: "ROLW", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ci) && operand.IsM16(mr): + return &avo.Instruction{ + Opcode: "ROLW", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsCl(ci) && operand.IsM16(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "ROLW", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{ci, mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "ROLW", - Operands: []operand.Op{ci, mr}, - }, nil + return nil, ErrBadOperandTypes } // RORB: Rotate Right. @@ -10384,18 +15078,49 @@ func ROLW(ci, mr operand.Op) (*avo.Instruction, error) { func RORB(ci, mr operand.Op) (*avo.Instruction, error) { switch { case operand.Is1(ci) && operand.IsR8(mr): + return &avo.Instruction{ + Opcode: "RORB", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ci) && operand.IsR8(mr): + return &avo.Instruction{ + Opcode: "RORB", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsCl(ci) && operand.IsR8(mr): + return &avo.Instruction{ + Opcode: "RORB", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{ci, mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.Is1(ci) && operand.IsM8(mr): + return &avo.Instruction{ + Opcode: "RORB", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ci) && operand.IsM8(mr): + return &avo.Instruction{ + Opcode: "RORB", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsCl(ci) && operand.IsM8(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "RORB", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{ci, mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "RORB", - Operands: []operand.Op{ci, mr}, - }, nil + return nil, ErrBadOperandTypes } // RORL: Rotate Right. @@ -10411,18 +15136,49 @@ func RORB(ci, mr operand.Op) (*avo.Instruction, error) { func RORL(ci, mr operand.Op) (*avo.Instruction, error) { switch { case operand.Is1(ci) && operand.IsR32(mr): + return &avo.Instruction{ + Opcode: "RORL", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ci) && operand.IsR32(mr): + return &avo.Instruction{ + Opcode: "RORL", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsCl(ci) && operand.IsR32(mr): + return &avo.Instruction{ + Opcode: "RORL", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{ci, mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.Is1(ci) && operand.IsM32(mr): + return &avo.Instruction{ + Opcode: "RORL", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ci) && operand.IsM32(mr): + return &avo.Instruction{ + Opcode: "RORL", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsCl(ci) && operand.IsM32(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "RORL", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{ci, mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "RORL", - Operands: []operand.Op{ci, mr}, - }, nil + return nil, ErrBadOperandTypes } // RORQ: Rotate Right. @@ -10438,18 +15194,49 @@ func RORL(ci, mr operand.Op) (*avo.Instruction, error) { func RORQ(ci, mr operand.Op) (*avo.Instruction, error) { switch { case operand.Is1(ci) && operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "RORQ", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ci) && operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "RORQ", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsCl(ci) && operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "RORQ", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{ci, mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.Is1(ci) && operand.IsM64(mr): + return &avo.Instruction{ + Opcode: "RORQ", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ci) && operand.IsM64(mr): + return &avo.Instruction{ + Opcode: "RORQ", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsCl(ci) && operand.IsM64(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "RORQ", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{ci, mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "RORQ", - Operands: []operand.Op{ci, mr}, - }, nil + return nil, ErrBadOperandTypes } // RORW: Rotate Right. @@ -10465,18 +15252,49 @@ func RORQ(ci, mr operand.Op) (*avo.Instruction, error) { func RORW(ci, mr operand.Op) (*avo.Instruction, error) { switch { case operand.Is1(ci) && operand.IsR16(mr): + return &avo.Instruction{ + Opcode: "RORW", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ci) && operand.IsR16(mr): + return &avo.Instruction{ + Opcode: "RORW", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsCl(ci) && operand.IsR16(mr): + return &avo.Instruction{ + Opcode: "RORW", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{ci, mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.Is1(ci) && operand.IsM16(mr): + return &avo.Instruction{ + Opcode: "RORW", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ci) && operand.IsM16(mr): + return &avo.Instruction{ + Opcode: "RORW", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsCl(ci) && operand.IsM16(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "RORW", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{ci, mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "RORW", - Operands: []operand.Op{ci, mr}, - }, nil + return nil, ErrBadOperandTypes } // RORXL: Rotate Right Logical Without Affecting Flags. @@ -10488,14 +15306,21 @@ func RORW(ci, mr operand.Op) (*avo.Instruction, error) { func RORXL(i, mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsR32(mr) && operand.IsR32(r): + return &avo.Instruction{ + Opcode: "RORXL", + Operands: []operand.Op{i, mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil case operand.IsImm8(i) && operand.IsM32(mr) && operand.IsR32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "RORXL", + Operands: []operand.Op{i, mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "RORXL", - Operands: []operand.Op{i, mr, r}, - }, nil + return nil, ErrBadOperandTypes } // RORXQ: Rotate Right Logical Without Affecting Flags. @@ -10507,14 +15332,21 @@ func RORXL(i, mr, r operand.Op) (*avo.Instruction, error) { func RORXQ(i, mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsR64(mr) && operand.IsR64(r): + return &avo.Instruction{ + Opcode: "RORXQ", + Operands: []operand.Op{i, mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil case operand.IsImm8(i) && operand.IsM64(mr) && operand.IsR64(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "RORXQ", + Operands: []operand.Op{i, mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "RORXQ", - Operands: []operand.Op{i, mr, r}, - }, nil + return nil, ErrBadOperandTypes } // ROUNDPD: Round Packed Double Precision Floating-Point Values. @@ -10526,14 +15358,21 @@ func RORXQ(i, mr, r operand.Op) (*avo.Instruction, error) { func ROUNDPD(i, mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "ROUNDPD", + Operands: []operand.Op{i, mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil case operand.IsImm8(i) && operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "ROUNDPD", + Operands: []operand.Op{i, mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "ROUNDPD", - Operands: []operand.Op{i, mx, x}, - }, nil + return nil, ErrBadOperandTypes } // ROUNDPS: Round Packed Single Precision Floating-Point Values. @@ -10545,14 +15384,21 @@ func ROUNDPD(i, mx, x operand.Op) (*avo.Instruction, error) { func ROUNDPS(i, mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "ROUNDPS", + Operands: []operand.Op{i, mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil case operand.IsImm8(i) && operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "ROUNDPS", + Operands: []operand.Op{i, mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "ROUNDPS", - Operands: []operand.Op{i, mx, x}, - }, nil + return nil, ErrBadOperandTypes } // ROUNDSD: Round Scalar Double Precision Floating-Point Values. @@ -10564,14 +15410,21 @@ func ROUNDPS(i, mx, x operand.Op) (*avo.Instruction, error) { func ROUNDSD(i, mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "ROUNDSD", + Operands: []operand.Op{i, mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsImm8(i) && operand.IsM64(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "ROUNDSD", + Operands: []operand.Op{i, mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "ROUNDSD", - Operands: []operand.Op{i, mx, x}, - }, nil + return nil, ErrBadOperandTypes } // ROUNDSS: Round Scalar Single Precision Floating-Point Values. @@ -10583,14 +15436,21 @@ func ROUNDSD(i, mx, x operand.Op) (*avo.Instruction, error) { func ROUNDSS(i, mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "ROUNDSS", + Operands: []operand.Op{i, mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsImm8(i) && operand.IsM32(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "ROUNDSS", + Operands: []operand.Op{i, mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "ROUNDSS", - Operands: []operand.Op{i, mx, x}, - }, nil + return nil, ErrBadOperandTypes } // RSQRTPS: Compute Reciprocals of Square Roots of Packed Single-Precision Floating-Point Values. @@ -10602,14 +15462,21 @@ func ROUNDSS(i, mx, x operand.Op) (*avo.Instruction, error) { func RSQRTPS(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "RSQRTPS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "RSQRTPS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "RSQRTPS", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // RSQRTSS: Compute Reciprocal of Square Root of Scalar Single-Precision Floating-Point Value. @@ -10621,14 +15488,21 @@ func RSQRTPS(mx, x operand.Op) (*avo.Instruction, error) { func RSQRTSS(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "RSQRTSS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM32(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "RSQRTSS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "RSQRTSS", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // SALB: Arithmetic Shift Left. @@ -10644,18 +15518,49 @@ func RSQRTSS(mx, x operand.Op) (*avo.Instruction, error) { func SALB(ci, mr operand.Op) (*avo.Instruction, error) { switch { case operand.Is1(ci) && operand.IsR8(mr): + return &avo.Instruction{ + Opcode: "SALB", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ci) && operand.IsR8(mr): + return &avo.Instruction{ + Opcode: "SALB", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsCl(ci) && operand.IsR8(mr): + return &avo.Instruction{ + Opcode: "SALB", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{ci, mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.Is1(ci) && operand.IsM8(mr): + return &avo.Instruction{ + Opcode: "SALB", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ci) && operand.IsM8(mr): + return &avo.Instruction{ + Opcode: "SALB", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsCl(ci) && operand.IsM8(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SALB", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{ci, mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "SALB", - Operands: []operand.Op{ci, mr}, - }, nil + return nil, ErrBadOperandTypes } // SALL: Arithmetic Shift Left. @@ -10671,18 +15576,49 @@ func SALB(ci, mr operand.Op) (*avo.Instruction, error) { func SALL(ci, mr operand.Op) (*avo.Instruction, error) { switch { case operand.Is1(ci) && operand.IsR32(mr): + return &avo.Instruction{ + Opcode: "SALL", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ci) && operand.IsR32(mr): + return &avo.Instruction{ + Opcode: "SALL", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsCl(ci) && operand.IsR32(mr): + return &avo.Instruction{ + Opcode: "SALL", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{ci, mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.Is1(ci) && operand.IsM32(mr): + return &avo.Instruction{ + Opcode: "SALL", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ci) && operand.IsM32(mr): + return &avo.Instruction{ + Opcode: "SALL", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsCl(ci) && operand.IsM32(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SALL", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{ci, mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "SALL", - Operands: []operand.Op{ci, mr}, - }, nil + return nil, ErrBadOperandTypes } // SALQ: Arithmetic Shift Left. @@ -10698,18 +15634,49 @@ func SALL(ci, mr operand.Op) (*avo.Instruction, error) { func SALQ(ci, mr operand.Op) (*avo.Instruction, error) { switch { case operand.Is1(ci) && operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "SALQ", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ci) && operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "SALQ", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsCl(ci) && operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "SALQ", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{ci, mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.Is1(ci) && operand.IsM64(mr): + return &avo.Instruction{ + Opcode: "SALQ", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ci) && operand.IsM64(mr): + return &avo.Instruction{ + Opcode: "SALQ", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsCl(ci) && operand.IsM64(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SALQ", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{ci, mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "SALQ", - Operands: []operand.Op{ci, mr}, - }, nil + return nil, ErrBadOperandTypes } // SALW: Arithmetic Shift Left. @@ -10725,18 +15692,49 @@ func SALQ(ci, mr operand.Op) (*avo.Instruction, error) { func SALW(ci, mr operand.Op) (*avo.Instruction, error) { switch { case operand.Is1(ci) && operand.IsR16(mr): + return &avo.Instruction{ + Opcode: "SALW", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ci) && operand.IsR16(mr): + return &avo.Instruction{ + Opcode: "SALW", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsCl(ci) && operand.IsR16(mr): + return &avo.Instruction{ + Opcode: "SALW", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{ci, mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.Is1(ci) && operand.IsM16(mr): + return &avo.Instruction{ + Opcode: "SALW", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ci) && operand.IsM16(mr): + return &avo.Instruction{ + Opcode: "SALW", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsCl(ci) && operand.IsM16(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SALW", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{ci, mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "SALW", - Operands: []operand.Op{ci, mr}, - }, nil + return nil, ErrBadOperandTypes } // SARB: Arithmetic Shift Right. @@ -10752,18 +15750,49 @@ func SALW(ci, mr operand.Op) (*avo.Instruction, error) { func SARB(ci, mr operand.Op) (*avo.Instruction, error) { switch { case operand.Is1(ci) && operand.IsR8(mr): + return &avo.Instruction{ + Opcode: "SARB", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ci) && operand.IsR8(mr): + return &avo.Instruction{ + Opcode: "SARB", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsCl(ci) && operand.IsR8(mr): + return &avo.Instruction{ + Opcode: "SARB", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{ci, mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.Is1(ci) && operand.IsM8(mr): + return &avo.Instruction{ + Opcode: "SARB", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ci) && operand.IsM8(mr): + return &avo.Instruction{ + Opcode: "SARB", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsCl(ci) && operand.IsM8(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SARB", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{ci, mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "SARB", - Operands: []operand.Op{ci, mr}, - }, nil + return nil, ErrBadOperandTypes } // SARL: Arithmetic Shift Right. @@ -10779,18 +15808,49 @@ func SARB(ci, mr operand.Op) (*avo.Instruction, error) { func SARL(ci, mr operand.Op) (*avo.Instruction, error) { switch { case operand.Is1(ci) && operand.IsR32(mr): + return &avo.Instruction{ + Opcode: "SARL", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ci) && operand.IsR32(mr): + return &avo.Instruction{ + Opcode: "SARL", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsCl(ci) && operand.IsR32(mr): + return &avo.Instruction{ + Opcode: "SARL", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{ci, mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.Is1(ci) && operand.IsM32(mr): + return &avo.Instruction{ + Opcode: "SARL", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ci) && operand.IsM32(mr): + return &avo.Instruction{ + Opcode: "SARL", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsCl(ci) && operand.IsM32(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SARL", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{ci, mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "SARL", - Operands: []operand.Op{ci, mr}, - }, nil + return nil, ErrBadOperandTypes } // SARQ: Arithmetic Shift Right. @@ -10806,18 +15866,49 @@ func SARL(ci, mr operand.Op) (*avo.Instruction, error) { func SARQ(ci, mr operand.Op) (*avo.Instruction, error) { switch { case operand.Is1(ci) && operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "SARQ", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ci) && operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "SARQ", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsCl(ci) && operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "SARQ", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{ci, mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.Is1(ci) && operand.IsM64(mr): + return &avo.Instruction{ + Opcode: "SARQ", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ci) && operand.IsM64(mr): + return &avo.Instruction{ + Opcode: "SARQ", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsCl(ci) && operand.IsM64(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SARQ", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{ci, mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "SARQ", - Operands: []operand.Op{ci, mr}, - }, nil + return nil, ErrBadOperandTypes } // SARW: Arithmetic Shift Right. @@ -10833,18 +15924,49 @@ func SARQ(ci, mr operand.Op) (*avo.Instruction, error) { func SARW(ci, mr operand.Op) (*avo.Instruction, error) { switch { case operand.Is1(ci) && operand.IsR16(mr): + return &avo.Instruction{ + Opcode: "SARW", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ci) && operand.IsR16(mr): + return &avo.Instruction{ + Opcode: "SARW", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsCl(ci) && operand.IsR16(mr): + return &avo.Instruction{ + Opcode: "SARW", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{ci, mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.Is1(ci) && operand.IsM16(mr): + return &avo.Instruction{ + Opcode: "SARW", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ci) && operand.IsM16(mr): + return &avo.Instruction{ + Opcode: "SARW", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsCl(ci) && operand.IsM16(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SARW", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{ci, mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "SARW", - Operands: []operand.Op{ci, mr}, - }, nil + return nil, ErrBadOperandTypes } // SARXL: Arithmetic Shift Right Without Affecting Flags. @@ -10856,14 +15978,21 @@ func SARW(ci, mr operand.Op) (*avo.Instruction, error) { func SARXL(r, mr, r1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsR32(r) && operand.IsR32(mr) && operand.IsR32(r1): + return &avo.Instruction{ + Opcode: "SARXL", + Operands: []operand.Op{r, mr, r1}, + Inputs: []operand.Op{r, mr}, + Outputs: []operand.Op{r1}, + }, nil case operand.IsR32(r) && operand.IsM32(mr) && operand.IsR32(r1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SARXL", + Operands: []operand.Op{r, mr, r1}, + Inputs: []operand.Op{r, mr}, + Outputs: []operand.Op{r1}, + }, nil } - return &avo.Instruction{ - Opcode: "SARXL", - Operands: []operand.Op{r, mr, r1}, - }, nil + return nil, ErrBadOperandTypes } // SARXQ: Arithmetic Shift Right Without Affecting Flags. @@ -10875,14 +16004,21 @@ func SARXL(r, mr, r1 operand.Op) (*avo.Instruction, error) { func SARXQ(r, mr, r1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsR64(r) && operand.IsR64(mr) && operand.IsR64(r1): + return &avo.Instruction{ + Opcode: "SARXQ", + Operands: []operand.Op{r, mr, r1}, + Inputs: []operand.Op{r, mr}, + Outputs: []operand.Op{r1}, + }, nil case operand.IsR64(r) && operand.IsM64(mr) && operand.IsR64(r1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SARXQ", + Operands: []operand.Op{r, mr, r1}, + Inputs: []operand.Op{r, mr}, + Outputs: []operand.Op{r1}, + }, nil } - return &avo.Instruction{ - Opcode: "SARXQ", - Operands: []operand.Op{r, mr, r1}, - }, nil + return nil, ErrBadOperandTypes } // SBBB: Subtract with Borrow. @@ -10898,18 +16034,49 @@ func SARXQ(r, mr, r1 operand.Op) (*avo.Instruction, error) { func SBBB(imr, amr operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(imr) && operand.IsAl(amr): + return &avo.Instruction{ + Opcode: "SBBB", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsImm8(imr) && operand.IsR8(amr): + return &avo.Instruction{ + Opcode: "SBBB", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsR8(imr) && operand.IsR8(amr): + return &avo.Instruction{ + Opcode: "SBBB", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{imr, amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsM8(imr) && operand.IsR8(amr): + return &avo.Instruction{ + Opcode: "SBBB", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{imr, amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsImm8(imr) && operand.IsM8(amr): + return &avo.Instruction{ + Opcode: "SBBB", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsR8(imr) && operand.IsM8(amr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SBBB", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{imr, amr}, + Outputs: []operand.Op{amr}, + }, nil } - return &avo.Instruction{ - Opcode: "SBBB", - Operands: []operand.Op{imr, amr}, - }, nil + return nil, ErrBadOperandTypes } // SBBL: Subtract with Borrow. @@ -10927,20 +16094,63 @@ func SBBB(imr, amr operand.Op) (*avo.Instruction, error) { func SBBL(imr, emr operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm32(imr) && operand.IsEax(emr): + return &avo.Instruction{ + Opcode: "SBBL", + Operands: []operand.Op{imr, emr}, + Inputs: []operand.Op{emr}, + Outputs: []operand.Op{emr}, + }, nil case operand.IsImm8(imr) && operand.IsR32(emr): + return &avo.Instruction{ + Opcode: "SBBL", + Operands: []operand.Op{imr, emr}, + Inputs: []operand.Op{emr}, + Outputs: []operand.Op{emr}, + }, nil case operand.IsImm32(imr) && operand.IsR32(emr): + return &avo.Instruction{ + Opcode: "SBBL", + Operands: []operand.Op{imr, emr}, + Inputs: []operand.Op{emr}, + Outputs: []operand.Op{emr}, + }, nil case operand.IsR32(imr) && operand.IsR32(emr): + return &avo.Instruction{ + Opcode: "SBBL", + Operands: []operand.Op{imr, emr}, + Inputs: []operand.Op{imr, emr}, + Outputs: []operand.Op{emr}, + }, nil case operand.IsM32(imr) && operand.IsR32(emr): + return &avo.Instruction{ + Opcode: "SBBL", + Operands: []operand.Op{imr, emr}, + Inputs: []operand.Op{imr, emr}, + Outputs: []operand.Op{emr}, + }, nil case operand.IsImm8(imr) && operand.IsM32(emr): + return &avo.Instruction{ + Opcode: "SBBL", + Operands: []operand.Op{imr, emr}, + Inputs: []operand.Op{emr}, + Outputs: []operand.Op{emr}, + }, nil case operand.IsImm32(imr) && operand.IsM32(emr): + return &avo.Instruction{ + Opcode: "SBBL", + Operands: []operand.Op{imr, emr}, + Inputs: []operand.Op{emr}, + Outputs: []operand.Op{emr}, + }, nil case operand.IsR32(imr) && operand.IsM32(emr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SBBL", + Operands: []operand.Op{imr, emr}, + Inputs: []operand.Op{imr, emr}, + Outputs: []operand.Op{emr}, + }, nil } - return &avo.Instruction{ - Opcode: "SBBL", - Operands: []operand.Op{imr, emr}, - }, nil + return nil, ErrBadOperandTypes } // SBBQ: Subtract with Borrow. @@ -10958,20 +16168,63 @@ func SBBL(imr, emr operand.Op) (*avo.Instruction, error) { func SBBQ(imr, mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm32(imr) && operand.IsRax(mr): + return &avo.Instruction{ + Opcode: "SBBQ", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(imr) && operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "SBBQ", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm32(imr) && operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "SBBQ", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsR64(imr) && operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "SBBQ", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{imr, mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsM64(imr) && operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "SBBQ", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{imr, mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(imr) && operand.IsM64(mr): + return &avo.Instruction{ + Opcode: "SBBQ", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm32(imr) && operand.IsM64(mr): + return &avo.Instruction{ + Opcode: "SBBQ", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsR64(imr) && operand.IsM64(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SBBQ", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{imr, mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "SBBQ", - Operands: []operand.Op{imr, mr}, - }, nil + return nil, ErrBadOperandTypes } // SBBW: Subtract with Borrow. @@ -10989,20 +16242,63 @@ func SBBQ(imr, mr operand.Op) (*avo.Instruction, error) { func SBBW(imr, amr operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm16(imr) && operand.IsAx(amr): + return &avo.Instruction{ + Opcode: "SBBW", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsImm8(imr) && operand.IsR16(amr): + return &avo.Instruction{ + Opcode: "SBBW", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsImm16(imr) && operand.IsR16(amr): + return &avo.Instruction{ + Opcode: "SBBW", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsR16(imr) && operand.IsR16(amr): + return &avo.Instruction{ + Opcode: "SBBW", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{imr, amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsM16(imr) && operand.IsR16(amr): + return &avo.Instruction{ + Opcode: "SBBW", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{imr, amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsImm8(imr) && operand.IsM16(amr): + return &avo.Instruction{ + Opcode: "SBBW", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsImm16(imr) && operand.IsM16(amr): + return &avo.Instruction{ + Opcode: "SBBW", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsR16(imr) && operand.IsM16(amr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SBBW", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{imr, amr}, + Outputs: []operand.Op{amr}, + }, nil } - return &avo.Instruction{ - Opcode: "SBBW", - Operands: []operand.Op{imr, amr}, - }, nil + return nil, ErrBadOperandTypes } // SETCC: Set byte if above or equal (CF == 0). @@ -11011,25 +16307,24 @@ func SBBW(imr, amr operand.Op) (*avo.Instruction, error) { // // SETCC r8 // SETCC m8 -// SETCC r8 -// SETCC m8 -// SETCC r8 -// SETCC m8 func SETCC(mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsR8(mr): + return &avo.Instruction{ + Opcode: "SETCC", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsM8(mr): - case operand.IsR8(mr): - case operand.IsM8(mr): - case operand.IsR8(mr): - case operand.IsM8(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SETCC", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "SETCC", - Operands: []operand.Op{mr}, - }, nil + return nil, ErrBadOperandTypes } // SETCS: Set byte if below (CF == 1). @@ -11038,25 +16333,24 @@ func SETCC(mr operand.Op) (*avo.Instruction, error) { // // SETCS r8 // SETCS m8 -// SETCS r8 -// SETCS m8 -// SETCS r8 -// SETCS m8 func SETCS(mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsR8(mr): + return &avo.Instruction{ + Opcode: "SETCS", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsM8(mr): - case operand.IsR8(mr): - case operand.IsM8(mr): - case operand.IsR8(mr): - case operand.IsM8(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SETCS", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "SETCS", - Operands: []operand.Op{mr}, - }, nil + return nil, ErrBadOperandTypes } // SETEQ: Set byte if equal (ZF == 1). @@ -11065,21 +16359,24 @@ func SETCS(mr operand.Op) (*avo.Instruction, error) { // // SETEQ r8 // SETEQ m8 -// SETEQ r8 -// SETEQ m8 func SETEQ(mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsR8(mr): + return &avo.Instruction{ + Opcode: "SETEQ", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsM8(mr): - case operand.IsR8(mr): - case operand.IsM8(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SETEQ", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "SETEQ", - Operands: []operand.Op{mr}, - }, nil + return nil, ErrBadOperandTypes } // SETGE: Set byte if greater or equal (SF == OF). @@ -11088,21 +16385,24 @@ func SETEQ(mr operand.Op) (*avo.Instruction, error) { // // SETGE r8 // SETGE m8 -// SETGE r8 -// SETGE m8 func SETGE(mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsR8(mr): + return &avo.Instruction{ + Opcode: "SETGE", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsM8(mr): - case operand.IsR8(mr): - case operand.IsM8(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SETGE", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "SETGE", - Operands: []operand.Op{mr}, - }, nil + return nil, ErrBadOperandTypes } // SETGT: Set byte if greater (ZF == 0 and SF == OF). @@ -11111,21 +16411,24 @@ func SETGE(mr operand.Op) (*avo.Instruction, error) { // // SETGT r8 // SETGT m8 -// SETGT r8 -// SETGT m8 func SETGT(mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsR8(mr): + return &avo.Instruction{ + Opcode: "SETGT", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsM8(mr): - case operand.IsR8(mr): - case operand.IsM8(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SETGT", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "SETGT", - Operands: []operand.Op{mr}, - }, nil + return nil, ErrBadOperandTypes } // SETHI: Set byte if above (CF == 0 and ZF == 0). @@ -11134,21 +16437,24 @@ func SETGT(mr operand.Op) (*avo.Instruction, error) { // // SETHI r8 // SETHI m8 -// SETHI r8 -// SETHI m8 func SETHI(mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsR8(mr): + return &avo.Instruction{ + Opcode: "SETHI", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsM8(mr): - case operand.IsR8(mr): - case operand.IsM8(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SETHI", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "SETHI", - Operands: []operand.Op{mr}, - }, nil + return nil, ErrBadOperandTypes } // SETLE: Set byte if less or equal (ZF == 1 or SF != OF). @@ -11157,21 +16463,24 @@ func SETHI(mr operand.Op) (*avo.Instruction, error) { // // SETLE r8 // SETLE m8 -// SETLE r8 -// SETLE m8 func SETLE(mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsR8(mr): + return &avo.Instruction{ + Opcode: "SETLE", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsM8(mr): - case operand.IsR8(mr): - case operand.IsM8(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SETLE", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "SETLE", - Operands: []operand.Op{mr}, - }, nil + return nil, ErrBadOperandTypes } // SETLS: Set byte if below or equal (CF == 1 or ZF == 1). @@ -11180,21 +16489,24 @@ func SETLE(mr operand.Op) (*avo.Instruction, error) { // // SETLS r8 // SETLS m8 -// SETLS r8 -// SETLS m8 func SETLS(mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsR8(mr): + return &avo.Instruction{ + Opcode: "SETLS", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsM8(mr): - case operand.IsR8(mr): - case operand.IsM8(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SETLS", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "SETLS", - Operands: []operand.Op{mr}, - }, nil + return nil, ErrBadOperandTypes } // SETLT: Set byte if less (SF != OF). @@ -11203,21 +16515,24 @@ func SETLS(mr operand.Op) (*avo.Instruction, error) { // // SETLT r8 // SETLT m8 -// SETLT r8 -// SETLT m8 func SETLT(mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsR8(mr): + return &avo.Instruction{ + Opcode: "SETLT", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsM8(mr): - case operand.IsR8(mr): - case operand.IsM8(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SETLT", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "SETLT", - Operands: []operand.Op{mr}, - }, nil + return nil, ErrBadOperandTypes } // SETMI: Set byte if sign (SF == 1). @@ -11229,14 +16544,21 @@ func SETLT(mr operand.Op) (*avo.Instruction, error) { func SETMI(mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsR8(mr): + return &avo.Instruction{ + Opcode: "SETMI", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsM8(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SETMI", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "SETMI", - Operands: []operand.Op{mr}, - }, nil + return nil, ErrBadOperandTypes } // SETNE: Set byte if not equal (ZF == 0). @@ -11245,21 +16567,24 @@ func SETMI(mr operand.Op) (*avo.Instruction, error) { // // SETNE r8 // SETNE m8 -// SETNE r8 -// SETNE m8 func SETNE(mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsR8(mr): + return &avo.Instruction{ + Opcode: "SETNE", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsM8(mr): - case operand.IsR8(mr): - case operand.IsM8(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SETNE", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "SETNE", - Operands: []operand.Op{mr}, - }, nil + return nil, ErrBadOperandTypes } // SETOC: Set byte if not overflow (OF == 0). @@ -11271,14 +16596,21 @@ func SETNE(mr operand.Op) (*avo.Instruction, error) { func SETOC(mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsR8(mr): + return &avo.Instruction{ + Opcode: "SETOC", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsM8(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SETOC", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "SETOC", - Operands: []operand.Op{mr}, - }, nil + return nil, ErrBadOperandTypes } // SETOS: Set byte if overflow (OF == 1). @@ -11290,14 +16622,21 @@ func SETOC(mr operand.Op) (*avo.Instruction, error) { func SETOS(mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsR8(mr): + return &avo.Instruction{ + Opcode: "SETOS", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsM8(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SETOS", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "SETOS", - Operands: []operand.Op{mr}, - }, nil + return nil, ErrBadOperandTypes } // SETPC: Set byte if not parity (PF == 0). @@ -11306,21 +16645,24 @@ func SETOS(mr operand.Op) (*avo.Instruction, error) { // // SETPC r8 // SETPC m8 -// SETPC r8 -// SETPC m8 func SETPC(mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsR8(mr): + return &avo.Instruction{ + Opcode: "SETPC", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsM8(mr): - case operand.IsR8(mr): - case operand.IsM8(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SETPC", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "SETPC", - Operands: []operand.Op{mr}, - }, nil + return nil, ErrBadOperandTypes } // SETPL: Set byte if not sign (SF == 0). @@ -11332,14 +16674,21 @@ func SETPC(mr operand.Op) (*avo.Instruction, error) { func SETPL(mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsR8(mr): + return &avo.Instruction{ + Opcode: "SETPL", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsM8(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SETPL", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "SETPL", - Operands: []operand.Op{mr}, - }, nil + return nil, ErrBadOperandTypes } // SETPS: Set byte if parity (PF == 1). @@ -11348,21 +16697,24 @@ func SETPL(mr operand.Op) (*avo.Instruction, error) { // // SETPS r8 // SETPS m8 -// SETPS r8 -// SETPS m8 func SETPS(mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsR8(mr): + return &avo.Instruction{ + Opcode: "SETPS", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsM8(mr): - case operand.IsR8(mr): - case operand.IsM8(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SETPS", + Operands: []operand.Op{mr}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "SETPS", - Operands: []operand.Op{mr}, - }, nil + return nil, ErrBadOperandTypes } // SFENCE: Store Fence. @@ -11374,6 +16726,8 @@ func SFENCE() (*avo.Instruction, error) { return &avo.Instruction{ Opcode: "SFENCE", Operands: nil, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, }, nil } @@ -11386,14 +16740,21 @@ func SFENCE() (*avo.Instruction, error) { func SHA1MSG1(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "SHA1MSG1", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SHA1MSG1", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "SHA1MSG1", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // SHA1MSG2: Perform a Final Calculation for the Next Four SHA1 Message Doublewords. @@ -11405,14 +16766,21 @@ func SHA1MSG1(mx, x operand.Op) (*avo.Instruction, error) { func SHA1MSG2(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "SHA1MSG2", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SHA1MSG2", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "SHA1MSG2", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // SHA1NEXTE: Calculate SHA1 State Variable E after Four Rounds. @@ -11424,14 +16792,21 @@ func SHA1MSG2(mx, x operand.Op) (*avo.Instruction, error) { func SHA1NEXTE(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "SHA1NEXTE", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SHA1NEXTE", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "SHA1NEXTE", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // SHA1RNDS4: Perform Four Rounds of SHA1 Operation. @@ -11443,14 +16818,21 @@ func SHA1NEXTE(mx, x operand.Op) (*avo.Instruction, error) { func SHA1RNDS4(i, mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm2u(i) && operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "SHA1RNDS4", + Operands: []operand.Op{i, mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsImm2u(i) && operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SHA1RNDS4", + Operands: []operand.Op{i, mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "SHA1RNDS4", - Operands: []operand.Op{i, mx, x}, - }, nil + return nil, ErrBadOperandTypes } // SHA256MSG1: Perform an Intermediate Calculation for the Next Four SHA256 Message Doublewords. @@ -11462,14 +16844,21 @@ func SHA1RNDS4(i, mx, x operand.Op) (*avo.Instruction, error) { func SHA256MSG1(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "SHA256MSG1", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SHA256MSG1", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "SHA256MSG1", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // SHA256MSG2: Perform a Final Calculation for the Next Four SHA256 Message Doublewords. @@ -11481,14 +16870,21 @@ func SHA256MSG1(mx, x operand.Op) (*avo.Instruction, error) { func SHA256MSG2(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "SHA256MSG2", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SHA256MSG2", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "SHA256MSG2", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // SHA256RNDS2: Perform Two Rounds of SHA256 Operation. @@ -11500,14 +16896,21 @@ func SHA256MSG2(mx, x operand.Op) (*avo.Instruction, error) { func SHA256RNDS2(x, mx, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm0(x) && operand.IsXmm(mx) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "SHA256RNDS2", + Operands: []operand.Op{x, mx, x1}, + Inputs: []operand.Op{x, mx, x1}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsXmm0(x) && operand.IsM128(mx) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SHA256RNDS2", + Operands: []operand.Op{x, mx, x1}, + Inputs: []operand.Op{x, mx, x1}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "SHA256RNDS2", - Operands: []operand.Op{x, mx, x1}, - }, nil + return nil, ErrBadOperandTypes } // SHLB: Logical Shift Left. @@ -11523,18 +16926,49 @@ func SHA256RNDS2(x, mx, x1 operand.Op) (*avo.Instruction, error) { func SHLB(ci, mr operand.Op) (*avo.Instruction, error) { switch { case operand.Is1(ci) && operand.IsR8(mr): + return &avo.Instruction{ + Opcode: "SHLB", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ci) && operand.IsR8(mr): + return &avo.Instruction{ + Opcode: "SHLB", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsCl(ci) && operand.IsR8(mr): + return &avo.Instruction{ + Opcode: "SHLB", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{ci, mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.Is1(ci) && operand.IsM8(mr): + return &avo.Instruction{ + Opcode: "SHLB", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ci) && operand.IsM8(mr): + return &avo.Instruction{ + Opcode: "SHLB", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsCl(ci) && operand.IsM8(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SHLB", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{ci, mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "SHLB", - Operands: []operand.Op{ci, mr}, - }, nil + return nil, ErrBadOperandTypes } // SHLL: Logical Shift Left. @@ -11554,22 +16988,77 @@ func SHLB(ci, mr operand.Op) (*avo.Instruction, error) { func SHLL(ops ...operand.Op) (*avo.Instruction, error) { switch { case len(ops) == 2 && operand.Is1(ops[0]) && operand.IsR32(ops[1]): + return &avo.Instruction{ + Opcode: "SHLL", + Operands: ops, + Inputs: []operand.Op{ops[1]}, + Outputs: []operand.Op{ops[1]}, + }, nil case len(ops) == 2 && operand.IsImm8(ops[0]) && operand.IsR32(ops[1]): + return &avo.Instruction{ + Opcode: "SHLL", + Operands: ops, + Inputs: []operand.Op{ops[1]}, + Outputs: []operand.Op{ops[1]}, + }, nil case len(ops) == 2 && operand.IsCl(ops[0]) && operand.IsR32(ops[1]): + return &avo.Instruction{ + Opcode: "SHLL", + Operands: ops, + Inputs: []operand.Op{ops[0], ops[1]}, + Outputs: []operand.Op{ops[1]}, + }, nil case len(ops) == 2 && operand.Is1(ops[0]) && operand.IsM32(ops[1]): + return &avo.Instruction{ + Opcode: "SHLL", + Operands: ops, + Inputs: []operand.Op{ops[1]}, + Outputs: []operand.Op{ops[1]}, + }, nil case len(ops) == 2 && operand.IsImm8(ops[0]) && operand.IsM32(ops[1]): + return &avo.Instruction{ + Opcode: "SHLL", + Operands: ops, + Inputs: []operand.Op{ops[1]}, + Outputs: []operand.Op{ops[1]}, + }, nil case len(ops) == 2 && operand.IsCl(ops[0]) && operand.IsM32(ops[1]): + return &avo.Instruction{ + Opcode: "SHLL", + Operands: ops, + Inputs: []operand.Op{ops[0], ops[1]}, + Outputs: []operand.Op{ops[1]}, + }, nil case len(ops) == 3 && operand.IsImm8(ops[0]) && operand.IsR32(ops[1]) && operand.IsR32(ops[2]): + return &avo.Instruction{ + Opcode: "SHLL", + Operands: ops, + Inputs: []operand.Op{ops[1], ops[2]}, + Outputs: []operand.Op{ops[2]}, + }, nil case len(ops) == 3 && operand.IsCl(ops[0]) && operand.IsR32(ops[1]) && operand.IsR32(ops[2]): + return &avo.Instruction{ + Opcode: "SHLL", + Operands: ops, + Inputs: []operand.Op{ops[0], ops[1], ops[2]}, + Outputs: []operand.Op{ops[2]}, + }, nil case len(ops) == 3 && operand.IsImm8(ops[0]) && operand.IsR32(ops[1]) && operand.IsM32(ops[2]): + return &avo.Instruction{ + Opcode: "SHLL", + Operands: ops, + Inputs: []operand.Op{ops[1], ops[2]}, + Outputs: []operand.Op{ops[2]}, + }, nil case len(ops) == 3 && operand.IsCl(ops[0]) && operand.IsR32(ops[1]) && operand.IsM32(ops[2]): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SHLL", + Operands: ops, + Inputs: []operand.Op{ops[0], ops[1], ops[2]}, + Outputs: []operand.Op{ops[2]}, + }, nil } - return &avo.Instruction{ - Opcode: "SHLL", - Operands: ops, - }, nil + return nil, ErrBadOperandTypes } // SHLQ: Logical Shift Left. @@ -11589,22 +17078,77 @@ func SHLL(ops ...operand.Op) (*avo.Instruction, error) { func SHLQ(ops ...operand.Op) (*avo.Instruction, error) { switch { case len(ops) == 2 && operand.Is1(ops[0]) && operand.IsR64(ops[1]): + return &avo.Instruction{ + Opcode: "SHLQ", + Operands: ops, + Inputs: []operand.Op{ops[1]}, + Outputs: []operand.Op{ops[1]}, + }, nil case len(ops) == 2 && operand.IsImm8(ops[0]) && operand.IsR64(ops[1]): + return &avo.Instruction{ + Opcode: "SHLQ", + Operands: ops, + Inputs: []operand.Op{ops[1]}, + Outputs: []operand.Op{ops[1]}, + }, nil case len(ops) == 2 && operand.IsCl(ops[0]) && operand.IsR64(ops[1]): + return &avo.Instruction{ + Opcode: "SHLQ", + Operands: ops, + Inputs: []operand.Op{ops[0], ops[1]}, + Outputs: []operand.Op{ops[1]}, + }, nil case len(ops) == 2 && operand.Is1(ops[0]) && operand.IsM64(ops[1]): + return &avo.Instruction{ + Opcode: "SHLQ", + Operands: ops, + Inputs: []operand.Op{ops[1]}, + Outputs: []operand.Op{ops[1]}, + }, nil case len(ops) == 2 && operand.IsImm8(ops[0]) && operand.IsM64(ops[1]): + return &avo.Instruction{ + Opcode: "SHLQ", + Operands: ops, + Inputs: []operand.Op{ops[1]}, + Outputs: []operand.Op{ops[1]}, + }, nil case len(ops) == 2 && operand.IsCl(ops[0]) && operand.IsM64(ops[1]): + return &avo.Instruction{ + Opcode: "SHLQ", + Operands: ops, + Inputs: []operand.Op{ops[0], ops[1]}, + Outputs: []operand.Op{ops[1]}, + }, nil case len(ops) == 3 && operand.IsImm8(ops[0]) && operand.IsR64(ops[1]) && operand.IsR64(ops[2]): + return &avo.Instruction{ + Opcode: "SHLQ", + Operands: ops, + Inputs: []operand.Op{ops[1], ops[2]}, + Outputs: []operand.Op{ops[2]}, + }, nil case len(ops) == 3 && operand.IsCl(ops[0]) && operand.IsR64(ops[1]) && operand.IsR64(ops[2]): + return &avo.Instruction{ + Opcode: "SHLQ", + Operands: ops, + Inputs: []operand.Op{ops[0], ops[1], ops[2]}, + Outputs: []operand.Op{ops[2]}, + }, nil case len(ops) == 3 && operand.IsImm8(ops[0]) && operand.IsR64(ops[1]) && operand.IsM64(ops[2]): + return &avo.Instruction{ + Opcode: "SHLQ", + Operands: ops, + Inputs: []operand.Op{ops[1], ops[2]}, + Outputs: []operand.Op{ops[2]}, + }, nil case len(ops) == 3 && operand.IsCl(ops[0]) && operand.IsR64(ops[1]) && operand.IsM64(ops[2]): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SHLQ", + Operands: ops, + Inputs: []operand.Op{ops[0], ops[1], ops[2]}, + Outputs: []operand.Op{ops[2]}, + }, nil } - return &avo.Instruction{ - Opcode: "SHLQ", - Operands: ops, - }, nil + return nil, ErrBadOperandTypes } // SHLW: Logical Shift Left. @@ -11624,22 +17168,77 @@ func SHLQ(ops ...operand.Op) (*avo.Instruction, error) { func SHLW(ops ...operand.Op) (*avo.Instruction, error) { switch { case len(ops) == 2 && operand.Is1(ops[0]) && operand.IsR16(ops[1]): + return &avo.Instruction{ + Opcode: "SHLW", + Operands: ops, + Inputs: []operand.Op{ops[1]}, + Outputs: []operand.Op{ops[1]}, + }, nil case len(ops) == 2 && operand.IsImm8(ops[0]) && operand.IsR16(ops[1]): + return &avo.Instruction{ + Opcode: "SHLW", + Operands: ops, + Inputs: []operand.Op{ops[1]}, + Outputs: []operand.Op{ops[1]}, + }, nil case len(ops) == 2 && operand.IsCl(ops[0]) && operand.IsR16(ops[1]): + return &avo.Instruction{ + Opcode: "SHLW", + Operands: ops, + Inputs: []operand.Op{ops[0], ops[1]}, + Outputs: []operand.Op{ops[1]}, + }, nil case len(ops) == 2 && operand.Is1(ops[0]) && operand.IsM16(ops[1]): + return &avo.Instruction{ + Opcode: "SHLW", + Operands: ops, + Inputs: []operand.Op{ops[1]}, + Outputs: []operand.Op{ops[1]}, + }, nil case len(ops) == 2 && operand.IsImm8(ops[0]) && operand.IsM16(ops[1]): + return &avo.Instruction{ + Opcode: "SHLW", + Operands: ops, + Inputs: []operand.Op{ops[1]}, + Outputs: []operand.Op{ops[1]}, + }, nil case len(ops) == 2 && operand.IsCl(ops[0]) && operand.IsM16(ops[1]): + return &avo.Instruction{ + Opcode: "SHLW", + Operands: ops, + Inputs: []operand.Op{ops[0], ops[1]}, + Outputs: []operand.Op{ops[1]}, + }, nil case len(ops) == 3 && operand.IsImm8(ops[0]) && operand.IsR16(ops[1]) && operand.IsR16(ops[2]): + return &avo.Instruction{ + Opcode: "SHLW", + Operands: ops, + Inputs: []operand.Op{ops[1], ops[2]}, + Outputs: []operand.Op{ops[2]}, + }, nil case len(ops) == 3 && operand.IsCl(ops[0]) && operand.IsR16(ops[1]) && operand.IsR16(ops[2]): + return &avo.Instruction{ + Opcode: "SHLW", + Operands: ops, + Inputs: []operand.Op{ops[0], ops[1], ops[2]}, + Outputs: []operand.Op{ops[2]}, + }, nil case len(ops) == 3 && operand.IsImm8(ops[0]) && operand.IsR16(ops[1]) && operand.IsM16(ops[2]): + return &avo.Instruction{ + Opcode: "SHLW", + Operands: ops, + Inputs: []operand.Op{ops[1], ops[2]}, + Outputs: []operand.Op{ops[2]}, + }, nil case len(ops) == 3 && operand.IsCl(ops[0]) && operand.IsR16(ops[1]) && operand.IsM16(ops[2]): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SHLW", + Operands: ops, + Inputs: []operand.Op{ops[0], ops[1], ops[2]}, + Outputs: []operand.Op{ops[2]}, + }, nil } - return &avo.Instruction{ - Opcode: "SHLW", - Operands: ops, - }, nil + return nil, ErrBadOperandTypes } // SHLXL: Logical Shift Left Without Affecting Flags. @@ -11651,14 +17250,21 @@ func SHLW(ops ...operand.Op) (*avo.Instruction, error) { func SHLXL(r, mr, r1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsR32(r) && operand.IsR32(mr) && operand.IsR32(r1): + return &avo.Instruction{ + Opcode: "SHLXL", + Operands: []operand.Op{r, mr, r1}, + Inputs: []operand.Op{r, mr}, + Outputs: []operand.Op{r1}, + }, nil case operand.IsR32(r) && operand.IsM32(mr) && operand.IsR32(r1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SHLXL", + Operands: []operand.Op{r, mr, r1}, + Inputs: []operand.Op{r, mr}, + Outputs: []operand.Op{r1}, + }, nil } - return &avo.Instruction{ - Opcode: "SHLXL", - Operands: []operand.Op{r, mr, r1}, - }, nil + return nil, ErrBadOperandTypes } // SHLXQ: Logical Shift Left Without Affecting Flags. @@ -11670,14 +17276,21 @@ func SHLXL(r, mr, r1 operand.Op) (*avo.Instruction, error) { func SHLXQ(r, mr, r1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsR64(r) && operand.IsR64(mr) && operand.IsR64(r1): + return &avo.Instruction{ + Opcode: "SHLXQ", + Operands: []operand.Op{r, mr, r1}, + Inputs: []operand.Op{r, mr}, + Outputs: []operand.Op{r1}, + }, nil case operand.IsR64(r) && operand.IsM64(mr) && operand.IsR64(r1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SHLXQ", + Operands: []operand.Op{r, mr, r1}, + Inputs: []operand.Op{r, mr}, + Outputs: []operand.Op{r1}, + }, nil } - return &avo.Instruction{ - Opcode: "SHLXQ", - Operands: []operand.Op{r, mr, r1}, - }, nil + return nil, ErrBadOperandTypes } // SHRB: Logical Shift Right. @@ -11693,18 +17306,49 @@ func SHLXQ(r, mr, r1 operand.Op) (*avo.Instruction, error) { func SHRB(ci, mr operand.Op) (*avo.Instruction, error) { switch { case operand.Is1(ci) && operand.IsR8(mr): + return &avo.Instruction{ + Opcode: "SHRB", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ci) && operand.IsR8(mr): + return &avo.Instruction{ + Opcode: "SHRB", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsCl(ci) && operand.IsR8(mr): + return &avo.Instruction{ + Opcode: "SHRB", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{ci, mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.Is1(ci) && operand.IsM8(mr): + return &avo.Instruction{ + Opcode: "SHRB", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(ci) && operand.IsM8(mr): + return &avo.Instruction{ + Opcode: "SHRB", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsCl(ci) && operand.IsM8(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SHRB", + Operands: []operand.Op{ci, mr}, + Inputs: []operand.Op{ci, mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "SHRB", - Operands: []operand.Op{ci, mr}, - }, nil + return nil, ErrBadOperandTypes } // SHRL: Logical Shift Right. @@ -11724,22 +17368,77 @@ func SHRB(ci, mr operand.Op) (*avo.Instruction, error) { func SHRL(ops ...operand.Op) (*avo.Instruction, error) { switch { case len(ops) == 2 && operand.Is1(ops[0]) && operand.IsR32(ops[1]): + return &avo.Instruction{ + Opcode: "SHRL", + Operands: ops, + Inputs: []operand.Op{ops[1]}, + Outputs: []operand.Op{ops[1]}, + }, nil case len(ops) == 2 && operand.IsImm8(ops[0]) && operand.IsR32(ops[1]): + return &avo.Instruction{ + Opcode: "SHRL", + Operands: ops, + Inputs: []operand.Op{ops[1]}, + Outputs: []operand.Op{ops[1]}, + }, nil case len(ops) == 2 && operand.IsCl(ops[0]) && operand.IsR32(ops[1]): + return &avo.Instruction{ + Opcode: "SHRL", + Operands: ops, + Inputs: []operand.Op{ops[0], ops[1]}, + Outputs: []operand.Op{ops[1]}, + }, nil case len(ops) == 2 && operand.Is1(ops[0]) && operand.IsM32(ops[1]): + return &avo.Instruction{ + Opcode: "SHRL", + Operands: ops, + Inputs: []operand.Op{ops[1]}, + Outputs: []operand.Op{ops[1]}, + }, nil case len(ops) == 2 && operand.IsImm8(ops[0]) && operand.IsM32(ops[1]): + return &avo.Instruction{ + Opcode: "SHRL", + Operands: ops, + Inputs: []operand.Op{ops[1]}, + Outputs: []operand.Op{ops[1]}, + }, nil case len(ops) == 2 && operand.IsCl(ops[0]) && operand.IsM32(ops[1]): + return &avo.Instruction{ + Opcode: "SHRL", + Operands: ops, + Inputs: []operand.Op{ops[0], ops[1]}, + Outputs: []operand.Op{ops[1]}, + }, nil case len(ops) == 3 && operand.IsImm8(ops[0]) && operand.IsR32(ops[1]) && operand.IsR32(ops[2]): + return &avo.Instruction{ + Opcode: "SHRL", + Operands: ops, + Inputs: []operand.Op{ops[1], ops[2]}, + Outputs: []operand.Op{ops[2]}, + }, nil case len(ops) == 3 && operand.IsCl(ops[0]) && operand.IsR32(ops[1]) && operand.IsR32(ops[2]): + return &avo.Instruction{ + Opcode: "SHRL", + Operands: ops, + Inputs: []operand.Op{ops[0], ops[1], ops[2]}, + Outputs: []operand.Op{ops[2]}, + }, nil case len(ops) == 3 && operand.IsImm8(ops[0]) && operand.IsR32(ops[1]) && operand.IsM32(ops[2]): + return &avo.Instruction{ + Opcode: "SHRL", + Operands: ops, + Inputs: []operand.Op{ops[1], ops[2]}, + Outputs: []operand.Op{ops[2]}, + }, nil case len(ops) == 3 && operand.IsCl(ops[0]) && operand.IsR32(ops[1]) && operand.IsM32(ops[2]): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SHRL", + Operands: ops, + Inputs: []operand.Op{ops[0], ops[1], ops[2]}, + Outputs: []operand.Op{ops[2]}, + }, nil } - return &avo.Instruction{ - Opcode: "SHRL", - Operands: ops, - }, nil + return nil, ErrBadOperandTypes } // SHRQ: Logical Shift Right. @@ -11759,22 +17458,77 @@ func SHRL(ops ...operand.Op) (*avo.Instruction, error) { func SHRQ(ops ...operand.Op) (*avo.Instruction, error) { switch { case len(ops) == 2 && operand.Is1(ops[0]) && operand.IsR64(ops[1]): + return &avo.Instruction{ + Opcode: "SHRQ", + Operands: ops, + Inputs: []operand.Op{ops[1]}, + Outputs: []operand.Op{ops[1]}, + }, nil case len(ops) == 2 && operand.IsImm8(ops[0]) && operand.IsR64(ops[1]): + return &avo.Instruction{ + Opcode: "SHRQ", + Operands: ops, + Inputs: []operand.Op{ops[1]}, + Outputs: []operand.Op{ops[1]}, + }, nil case len(ops) == 2 && operand.IsCl(ops[0]) && operand.IsR64(ops[1]): + return &avo.Instruction{ + Opcode: "SHRQ", + Operands: ops, + Inputs: []operand.Op{ops[0], ops[1]}, + Outputs: []operand.Op{ops[1]}, + }, nil case len(ops) == 2 && operand.Is1(ops[0]) && operand.IsM64(ops[1]): + return &avo.Instruction{ + Opcode: "SHRQ", + Operands: ops, + Inputs: []operand.Op{ops[1]}, + Outputs: []operand.Op{ops[1]}, + }, nil case len(ops) == 2 && operand.IsImm8(ops[0]) && operand.IsM64(ops[1]): + return &avo.Instruction{ + Opcode: "SHRQ", + Operands: ops, + Inputs: []operand.Op{ops[1]}, + Outputs: []operand.Op{ops[1]}, + }, nil case len(ops) == 2 && operand.IsCl(ops[0]) && operand.IsM64(ops[1]): + return &avo.Instruction{ + Opcode: "SHRQ", + Operands: ops, + Inputs: []operand.Op{ops[0], ops[1]}, + Outputs: []operand.Op{ops[1]}, + }, nil case len(ops) == 3 && operand.IsImm8(ops[0]) && operand.IsR64(ops[1]) && operand.IsR64(ops[2]): + return &avo.Instruction{ + Opcode: "SHRQ", + Operands: ops, + Inputs: []operand.Op{ops[1], ops[2]}, + Outputs: []operand.Op{ops[2]}, + }, nil case len(ops) == 3 && operand.IsCl(ops[0]) && operand.IsR64(ops[1]) && operand.IsR64(ops[2]): + return &avo.Instruction{ + Opcode: "SHRQ", + Operands: ops, + Inputs: []operand.Op{ops[0], ops[1], ops[2]}, + Outputs: []operand.Op{ops[2]}, + }, nil case len(ops) == 3 && operand.IsImm8(ops[0]) && operand.IsR64(ops[1]) && operand.IsM64(ops[2]): + return &avo.Instruction{ + Opcode: "SHRQ", + Operands: ops, + Inputs: []operand.Op{ops[1], ops[2]}, + Outputs: []operand.Op{ops[2]}, + }, nil case len(ops) == 3 && operand.IsCl(ops[0]) && operand.IsR64(ops[1]) && operand.IsM64(ops[2]): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SHRQ", + Operands: ops, + Inputs: []operand.Op{ops[0], ops[1], ops[2]}, + Outputs: []operand.Op{ops[2]}, + }, nil } - return &avo.Instruction{ - Opcode: "SHRQ", - Operands: ops, - }, nil + return nil, ErrBadOperandTypes } // SHRW: Logical Shift Right. @@ -11794,22 +17548,77 @@ func SHRQ(ops ...operand.Op) (*avo.Instruction, error) { func SHRW(ops ...operand.Op) (*avo.Instruction, error) { switch { case len(ops) == 2 && operand.Is1(ops[0]) && operand.IsR16(ops[1]): + return &avo.Instruction{ + Opcode: "SHRW", + Operands: ops, + Inputs: []operand.Op{ops[1]}, + Outputs: []operand.Op{ops[1]}, + }, nil case len(ops) == 2 && operand.IsImm8(ops[0]) && operand.IsR16(ops[1]): + return &avo.Instruction{ + Opcode: "SHRW", + Operands: ops, + Inputs: []operand.Op{ops[1]}, + Outputs: []operand.Op{ops[1]}, + }, nil case len(ops) == 2 && operand.IsCl(ops[0]) && operand.IsR16(ops[1]): + return &avo.Instruction{ + Opcode: "SHRW", + Operands: ops, + Inputs: []operand.Op{ops[0], ops[1]}, + Outputs: []operand.Op{ops[1]}, + }, nil case len(ops) == 2 && operand.Is1(ops[0]) && operand.IsM16(ops[1]): + return &avo.Instruction{ + Opcode: "SHRW", + Operands: ops, + Inputs: []operand.Op{ops[1]}, + Outputs: []operand.Op{ops[1]}, + }, nil case len(ops) == 2 && operand.IsImm8(ops[0]) && operand.IsM16(ops[1]): + return &avo.Instruction{ + Opcode: "SHRW", + Operands: ops, + Inputs: []operand.Op{ops[1]}, + Outputs: []operand.Op{ops[1]}, + }, nil case len(ops) == 2 && operand.IsCl(ops[0]) && operand.IsM16(ops[1]): + return &avo.Instruction{ + Opcode: "SHRW", + Operands: ops, + Inputs: []operand.Op{ops[0], ops[1]}, + Outputs: []operand.Op{ops[1]}, + }, nil case len(ops) == 3 && operand.IsImm8(ops[0]) && operand.IsR16(ops[1]) && operand.IsR16(ops[2]): + return &avo.Instruction{ + Opcode: "SHRW", + Operands: ops, + Inputs: []operand.Op{ops[1], ops[2]}, + Outputs: []operand.Op{ops[2]}, + }, nil case len(ops) == 3 && operand.IsCl(ops[0]) && operand.IsR16(ops[1]) && operand.IsR16(ops[2]): + return &avo.Instruction{ + Opcode: "SHRW", + Operands: ops, + Inputs: []operand.Op{ops[0], ops[1], ops[2]}, + Outputs: []operand.Op{ops[2]}, + }, nil case len(ops) == 3 && operand.IsImm8(ops[0]) && operand.IsR16(ops[1]) && operand.IsM16(ops[2]): + return &avo.Instruction{ + Opcode: "SHRW", + Operands: ops, + Inputs: []operand.Op{ops[1], ops[2]}, + Outputs: []operand.Op{ops[2]}, + }, nil case len(ops) == 3 && operand.IsCl(ops[0]) && operand.IsR16(ops[1]) && operand.IsM16(ops[2]): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SHRW", + Operands: ops, + Inputs: []operand.Op{ops[0], ops[1], ops[2]}, + Outputs: []operand.Op{ops[2]}, + }, nil } - return &avo.Instruction{ - Opcode: "SHRW", - Operands: ops, - }, nil + return nil, ErrBadOperandTypes } // SHRXL: Logical Shift Right Without Affecting Flags. @@ -11821,14 +17630,21 @@ func SHRW(ops ...operand.Op) (*avo.Instruction, error) { func SHRXL(r, mr, r1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsR32(r) && operand.IsR32(mr) && operand.IsR32(r1): + return &avo.Instruction{ + Opcode: "SHRXL", + Operands: []operand.Op{r, mr, r1}, + Inputs: []operand.Op{r, mr}, + Outputs: []operand.Op{r1}, + }, nil case operand.IsR32(r) && operand.IsM32(mr) && operand.IsR32(r1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SHRXL", + Operands: []operand.Op{r, mr, r1}, + Inputs: []operand.Op{r, mr}, + Outputs: []operand.Op{r1}, + }, nil } - return &avo.Instruction{ - Opcode: "SHRXL", - Operands: []operand.Op{r, mr, r1}, - }, nil + return nil, ErrBadOperandTypes } // SHRXQ: Logical Shift Right Without Affecting Flags. @@ -11840,14 +17656,21 @@ func SHRXL(r, mr, r1 operand.Op) (*avo.Instruction, error) { func SHRXQ(r, mr, r1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsR64(r) && operand.IsR64(mr) && operand.IsR64(r1): + return &avo.Instruction{ + Opcode: "SHRXQ", + Operands: []operand.Op{r, mr, r1}, + Inputs: []operand.Op{r, mr}, + Outputs: []operand.Op{r1}, + }, nil case operand.IsR64(r) && operand.IsM64(mr) && operand.IsR64(r1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SHRXQ", + Operands: []operand.Op{r, mr, r1}, + Inputs: []operand.Op{r, mr}, + Outputs: []operand.Op{r1}, + }, nil } - return &avo.Instruction{ - Opcode: "SHRXQ", - Operands: []operand.Op{r, mr, r1}, - }, nil + return nil, ErrBadOperandTypes } // SHUFPD: Shuffle Packed Double-Precision Floating-Point Values. @@ -11859,14 +17682,21 @@ func SHRXQ(r, mr, r1 operand.Op) (*avo.Instruction, error) { func SHUFPD(i, mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "SHUFPD", + Operands: []operand.Op{i, mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsImm8(i) && operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SHUFPD", + Operands: []operand.Op{i, mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "SHUFPD", - Operands: []operand.Op{i, mx, x}, - }, nil + return nil, ErrBadOperandTypes } // SHUFPS: Shuffle Packed Single-Precision Floating-Point Values. @@ -11878,14 +17708,21 @@ func SHUFPD(i, mx, x operand.Op) (*avo.Instruction, error) { func SHUFPS(i, mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "SHUFPS", + Operands: []operand.Op{i, mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsImm8(i) && operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SHUFPS", + Operands: []operand.Op{i, mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "SHUFPS", - Operands: []operand.Op{i, mx, x}, - }, nil + return nil, ErrBadOperandTypes } // SQRTPD: Compute Square Roots of Packed Double-Precision Floating-Point Values. @@ -11897,14 +17734,21 @@ func SHUFPS(i, mx, x operand.Op) (*avo.Instruction, error) { func SQRTPD(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "SQRTPD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SQRTPD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "SQRTPD", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // SQRTPS: Compute Square Roots of Packed Single-Precision Floating-Point Values. @@ -11916,14 +17760,21 @@ func SQRTPD(mx, x operand.Op) (*avo.Instruction, error) { func SQRTPS(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "SQRTPS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SQRTPS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "SQRTPS", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // SQRTSD: Compute Square Root of Scalar Double-Precision Floating-Point Value. @@ -11935,14 +17786,21 @@ func SQRTPS(mx, x operand.Op) (*avo.Instruction, error) { func SQRTSD(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "SQRTSD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM64(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SQRTSD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "SQRTSD", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // SQRTSS: Compute Square Root of Scalar Single-Precision Floating-Point Value. @@ -11954,14 +17812,21 @@ func SQRTSD(mx, x operand.Op) (*avo.Instruction, error) { func SQRTSS(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "SQRTSS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM32(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SQRTSS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "SQRTSS", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // STC: Set Carry Flag. @@ -11973,6 +17838,8 @@ func STC() (*avo.Instruction, error) { return &avo.Instruction{ Opcode: "STC", Operands: nil, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, }, nil } @@ -11985,6 +17852,8 @@ func STD() (*avo.Instruction, error) { return &avo.Instruction{ Opcode: "STD", Operands: nil, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, }, nil } @@ -11996,13 +17865,14 @@ func STD() (*avo.Instruction, error) { func STMXCSR(m operand.Op) (*avo.Instruction, error) { switch { case operand.IsM32(m): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "STMXCSR", + Operands: []operand.Op{m}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{m}, + }, nil } - return &avo.Instruction{ - Opcode: "STMXCSR", - Operands: []operand.Op{m}, - }, nil + return nil, ErrBadOperandTypes } // SUBB: Subtract. @@ -12018,18 +17888,49 @@ func STMXCSR(m operand.Op) (*avo.Instruction, error) { func SUBB(imr, amr operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(imr) && operand.IsAl(amr): + return &avo.Instruction{ + Opcode: "SUBB", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsImm8(imr) && operand.IsR8(amr): + return &avo.Instruction{ + Opcode: "SUBB", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsR8(imr) && operand.IsR8(amr): + return &avo.Instruction{ + Opcode: "SUBB", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{imr, amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsM8(imr) && operand.IsR8(amr): + return &avo.Instruction{ + Opcode: "SUBB", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{imr, amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsImm8(imr) && operand.IsM8(amr): + return &avo.Instruction{ + Opcode: "SUBB", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsR8(imr) && operand.IsM8(amr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SUBB", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{imr, amr}, + Outputs: []operand.Op{amr}, + }, nil } - return &avo.Instruction{ - Opcode: "SUBB", - Operands: []operand.Op{imr, amr}, - }, nil + return nil, ErrBadOperandTypes } // SUBL: Subtract. @@ -12047,20 +17948,63 @@ func SUBB(imr, amr operand.Op) (*avo.Instruction, error) { func SUBL(imr, emr operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm32(imr) && operand.IsEax(emr): + return &avo.Instruction{ + Opcode: "SUBL", + Operands: []operand.Op{imr, emr}, + Inputs: []operand.Op{emr}, + Outputs: []operand.Op{emr}, + }, nil case operand.IsImm8(imr) && operand.IsR32(emr): + return &avo.Instruction{ + Opcode: "SUBL", + Operands: []operand.Op{imr, emr}, + Inputs: []operand.Op{emr}, + Outputs: []operand.Op{emr}, + }, nil case operand.IsImm32(imr) && operand.IsR32(emr): + return &avo.Instruction{ + Opcode: "SUBL", + Operands: []operand.Op{imr, emr}, + Inputs: []operand.Op{emr}, + Outputs: []operand.Op{emr}, + }, nil case operand.IsR32(imr) && operand.IsR32(emr): + return &avo.Instruction{ + Opcode: "SUBL", + Operands: []operand.Op{imr, emr}, + Inputs: []operand.Op{imr, emr}, + Outputs: []operand.Op{emr}, + }, nil case operand.IsM32(imr) && operand.IsR32(emr): + return &avo.Instruction{ + Opcode: "SUBL", + Operands: []operand.Op{imr, emr}, + Inputs: []operand.Op{imr, emr}, + Outputs: []operand.Op{emr}, + }, nil case operand.IsImm8(imr) && operand.IsM32(emr): + return &avo.Instruction{ + Opcode: "SUBL", + Operands: []operand.Op{imr, emr}, + Inputs: []operand.Op{emr}, + Outputs: []operand.Op{emr}, + }, nil case operand.IsImm32(imr) && operand.IsM32(emr): + return &avo.Instruction{ + Opcode: "SUBL", + Operands: []operand.Op{imr, emr}, + Inputs: []operand.Op{emr}, + Outputs: []operand.Op{emr}, + }, nil case operand.IsR32(imr) && operand.IsM32(emr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SUBL", + Operands: []operand.Op{imr, emr}, + Inputs: []operand.Op{imr, emr}, + Outputs: []operand.Op{emr}, + }, nil } - return &avo.Instruction{ - Opcode: "SUBL", - Operands: []operand.Op{imr, emr}, - }, nil + return nil, ErrBadOperandTypes } // SUBPD: Subtract Packed Double-Precision Floating-Point Values. @@ -12072,14 +18016,21 @@ func SUBL(imr, emr operand.Op) (*avo.Instruction, error) { func SUBPD(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "SUBPD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SUBPD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "SUBPD", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // SUBPS: Subtract Packed Single-Precision Floating-Point Values. @@ -12091,14 +18042,21 @@ func SUBPD(mx, x operand.Op) (*avo.Instruction, error) { func SUBPS(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "SUBPS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SUBPS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "SUBPS", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // SUBQ: Subtract. @@ -12116,20 +18074,63 @@ func SUBPS(mx, x operand.Op) (*avo.Instruction, error) { func SUBQ(imr, mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm32(imr) && operand.IsRax(mr): + return &avo.Instruction{ + Opcode: "SUBQ", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(imr) && operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "SUBQ", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm32(imr) && operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "SUBQ", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsR64(imr) && operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "SUBQ", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{imr, mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsM64(imr) && operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "SUBQ", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{imr, mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(imr) && operand.IsM64(mr): + return &avo.Instruction{ + Opcode: "SUBQ", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm32(imr) && operand.IsM64(mr): + return &avo.Instruction{ + Opcode: "SUBQ", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsR64(imr) && operand.IsM64(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SUBQ", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{imr, mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "SUBQ", - Operands: []operand.Op{imr, mr}, - }, nil + return nil, ErrBadOperandTypes } // SUBSD: Subtract Scalar Double-Precision Floating-Point Values. @@ -12141,14 +18142,21 @@ func SUBQ(imr, mr operand.Op) (*avo.Instruction, error) { func SUBSD(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "SUBSD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM64(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SUBSD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "SUBSD", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // SUBSS: Subtract Scalar Single-Precision Floating-Point Values. @@ -12160,14 +18168,21 @@ func SUBSD(mx, x operand.Op) (*avo.Instruction, error) { func SUBSS(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "SUBSS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM32(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SUBSS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "SUBSS", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // SUBW: Subtract. @@ -12185,20 +18200,63 @@ func SUBSS(mx, x operand.Op) (*avo.Instruction, error) { func SUBW(imr, amr operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm16(imr) && operand.IsAx(amr): + return &avo.Instruction{ + Opcode: "SUBW", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsImm8(imr) && operand.IsR16(amr): + return &avo.Instruction{ + Opcode: "SUBW", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsImm16(imr) && operand.IsR16(amr): + return &avo.Instruction{ + Opcode: "SUBW", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsR16(imr) && operand.IsR16(amr): + return &avo.Instruction{ + Opcode: "SUBW", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{imr, amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsM16(imr) && operand.IsR16(amr): + return &avo.Instruction{ + Opcode: "SUBW", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{imr, amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsImm8(imr) && operand.IsM16(amr): + return &avo.Instruction{ + Opcode: "SUBW", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsImm16(imr) && operand.IsM16(amr): + return &avo.Instruction{ + Opcode: "SUBW", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsR16(imr) && operand.IsM16(amr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "SUBW", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{imr, amr}, + Outputs: []operand.Op{amr}, + }, nil } - return &avo.Instruction{ - Opcode: "SUBW", - Operands: []operand.Op{imr, amr}, - }, nil + return nil, ErrBadOperandTypes } // SYSCALL: Fast System Call. @@ -12210,6 +18268,8 @@ func SYSCALL() (*avo.Instruction, error) { return &avo.Instruction{ Opcode: "SYSCALL", Operands: nil, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, }, nil } @@ -12225,17 +18285,42 @@ func SYSCALL() (*avo.Instruction, error) { func TESTB(ir, amr operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(ir) && operand.IsAl(amr): + return &avo.Instruction{ + Opcode: "TESTB", + Operands: []operand.Op{ir, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{}, + }, nil case operand.IsImm8(ir) && operand.IsR8(amr): + return &avo.Instruction{ + Opcode: "TESTB", + Operands: []operand.Op{ir, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{}, + }, nil case operand.IsR8(ir) && operand.IsR8(amr): + return &avo.Instruction{ + Opcode: "TESTB", + Operands: []operand.Op{ir, amr}, + Inputs: []operand.Op{ir, amr}, + Outputs: []operand.Op{}, + }, nil case operand.IsImm8(ir) && operand.IsM8(amr): + return &avo.Instruction{ + Opcode: "TESTB", + Operands: []operand.Op{ir, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{}, + }, nil case operand.IsR8(ir) && operand.IsM8(amr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "TESTB", + Operands: []operand.Op{ir, amr}, + Inputs: []operand.Op{ir, amr}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "TESTB", - Operands: []operand.Op{ir, amr}, - }, nil + return nil, ErrBadOperandTypes } // TESTL: Logical Compare. @@ -12250,17 +18335,42 @@ func TESTB(ir, amr operand.Op) (*avo.Instruction, error) { func TESTL(ir, emr operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm32(ir) && operand.IsEax(emr): + return &avo.Instruction{ + Opcode: "TESTL", + Operands: []operand.Op{ir, emr}, + Inputs: []operand.Op{emr}, + Outputs: []operand.Op{}, + }, nil case operand.IsImm32(ir) && operand.IsR32(emr): + return &avo.Instruction{ + Opcode: "TESTL", + Operands: []operand.Op{ir, emr}, + Inputs: []operand.Op{emr}, + Outputs: []operand.Op{}, + }, nil case operand.IsR32(ir) && operand.IsR32(emr): + return &avo.Instruction{ + Opcode: "TESTL", + Operands: []operand.Op{ir, emr}, + Inputs: []operand.Op{ir, emr}, + Outputs: []operand.Op{}, + }, nil case operand.IsImm32(ir) && operand.IsM32(emr): + return &avo.Instruction{ + Opcode: "TESTL", + Operands: []operand.Op{ir, emr}, + Inputs: []operand.Op{emr}, + Outputs: []operand.Op{}, + }, nil case operand.IsR32(ir) && operand.IsM32(emr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "TESTL", + Operands: []operand.Op{ir, emr}, + Inputs: []operand.Op{ir, emr}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "TESTL", - Operands: []operand.Op{ir, emr}, - }, nil + return nil, ErrBadOperandTypes } // TESTQ: Logical Compare. @@ -12275,17 +18385,42 @@ func TESTL(ir, emr operand.Op) (*avo.Instruction, error) { func TESTQ(ir, mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm32(ir) && operand.IsRax(mr): + return &avo.Instruction{ + Opcode: "TESTQ", + Operands: []operand.Op{ir, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{}, + }, nil case operand.IsImm32(ir) && operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "TESTQ", + Operands: []operand.Op{ir, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{}, + }, nil case operand.IsR64(ir) && operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "TESTQ", + Operands: []operand.Op{ir, mr}, + Inputs: []operand.Op{ir, mr}, + Outputs: []operand.Op{}, + }, nil case operand.IsImm32(ir) && operand.IsM64(mr): + return &avo.Instruction{ + Opcode: "TESTQ", + Operands: []operand.Op{ir, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{}, + }, nil case operand.IsR64(ir) && operand.IsM64(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "TESTQ", + Operands: []operand.Op{ir, mr}, + Inputs: []operand.Op{ir, mr}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "TESTQ", - Operands: []operand.Op{ir, mr}, - }, nil + return nil, ErrBadOperandTypes } // TESTW: Logical Compare. @@ -12300,17 +18435,42 @@ func TESTQ(ir, mr operand.Op) (*avo.Instruction, error) { func TESTW(ir, amr operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm16(ir) && operand.IsAx(amr): + return &avo.Instruction{ + Opcode: "TESTW", + Operands: []operand.Op{ir, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{}, + }, nil case operand.IsImm16(ir) && operand.IsR16(amr): + return &avo.Instruction{ + Opcode: "TESTW", + Operands: []operand.Op{ir, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{}, + }, nil case operand.IsR16(ir) && operand.IsR16(amr): + return &avo.Instruction{ + Opcode: "TESTW", + Operands: []operand.Op{ir, amr}, + Inputs: []operand.Op{ir, amr}, + Outputs: []operand.Op{}, + }, nil case operand.IsImm16(ir) && operand.IsM16(amr): + return &avo.Instruction{ + Opcode: "TESTW", + Operands: []operand.Op{ir, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{}, + }, nil case operand.IsR16(ir) && operand.IsM16(amr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "TESTW", + Operands: []operand.Op{ir, amr}, + Inputs: []operand.Op{ir, amr}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "TESTW", - Operands: []operand.Op{ir, amr}, - }, nil + return nil, ErrBadOperandTypes } // TZCNTL: Count the Number of Trailing Zero Bits. @@ -12322,14 +18482,21 @@ func TESTW(ir, amr operand.Op) (*avo.Instruction, error) { func TZCNTL(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR32(mr) && operand.IsR32(r): + return &avo.Instruction{ + Opcode: "TZCNTL", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM32(mr) && operand.IsR32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "TZCNTL", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "TZCNTL", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // TZCNTQ: Count the Number of Trailing Zero Bits. @@ -12341,14 +18508,21 @@ func TZCNTL(mr, r operand.Op) (*avo.Instruction, error) { func TZCNTQ(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR64(mr) && operand.IsR64(r): + return &avo.Instruction{ + Opcode: "TZCNTQ", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM64(mr) && operand.IsR64(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "TZCNTQ", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "TZCNTQ", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // TZCNTW: Count the Number of Trailing Zero Bits. @@ -12360,14 +18534,21 @@ func TZCNTQ(mr, r operand.Op) (*avo.Instruction, error) { func TZCNTW(mr, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsR16(mr) && operand.IsR16(r): + return &avo.Instruction{ + Opcode: "TZCNTW", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM16(mr) && operand.IsR16(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "TZCNTW", + Operands: []operand.Op{mr, r}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "TZCNTW", - Operands: []operand.Op{mr, r}, - }, nil + return nil, ErrBadOperandTypes } // UCOMISD: Unordered Compare Scalar Double-Precision Floating-Point Values and Set EFLAGS. @@ -12379,14 +18560,21 @@ func TZCNTW(mr, r operand.Op) (*avo.Instruction, error) { func UCOMISD(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "UCOMISD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{}, + }, nil case operand.IsM64(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "UCOMISD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "UCOMISD", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // UCOMISS: Unordered Compare Scalar Single-Precision Floating-Point Values and Set EFLAGS. @@ -12398,14 +18586,21 @@ func UCOMISD(mx, x operand.Op) (*avo.Instruction, error) { func UCOMISS(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "UCOMISS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{}, + }, nil case operand.IsM32(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "UCOMISS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "UCOMISS", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // UD2: Undefined Instruction. @@ -12417,6 +18612,8 @@ func UD2() (*avo.Instruction, error) { return &avo.Instruction{ Opcode: "UD2", Operands: nil, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, }, nil } @@ -12429,14 +18626,21 @@ func UD2() (*avo.Instruction, error) { func UNPCKHPD(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "UNPCKHPD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "UNPCKHPD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "UNPCKHPD", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // UNPCKHPS: Unpack and Interleave High Packed Single-Precision Floating-Point Values. @@ -12448,14 +18652,21 @@ func UNPCKHPD(mx, x operand.Op) (*avo.Instruction, error) { func UNPCKHPS(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "UNPCKHPS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "UNPCKHPS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "UNPCKHPS", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // UNPCKLPD: Unpack and Interleave Low Packed Double-Precision Floating-Point Values. @@ -12467,14 +18678,21 @@ func UNPCKHPS(mx, x operand.Op) (*avo.Instruction, error) { func UNPCKLPD(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "UNPCKLPD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "UNPCKLPD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "UNPCKLPD", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // UNPCKLPS: Unpack and Interleave Low Packed Single-Precision Floating-Point Values. @@ -12486,14 +18704,21 @@ func UNPCKLPD(mx, x operand.Op) (*avo.Instruction, error) { func UNPCKLPS(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "UNPCKLPS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "UNPCKLPS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "UNPCKLPS", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // VADDPD: Add Packed Double-Precision Floating-Point Values. @@ -12507,16 +18732,35 @@ func UNPCKLPS(mx, x operand.Op) (*avo.Instruction, error) { func VADDPD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VADDPD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VADDPD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VADDPD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VADDPD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VADDPD", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VADDPS: Add Packed Single-Precision Floating-Point Values. @@ -12530,16 +18774,35 @@ func VADDPD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VADDPS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VADDPS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VADDPS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VADDPS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VADDPS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VADDPS", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VADDSD: Add Scalar Double-Precision Floating-Point Values. @@ -12551,14 +18814,21 @@ func VADDPS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VADDSD(mx, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VADDSD", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsM64(mx) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VADDSD", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VADDSD", - Operands: []operand.Op{mx, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VADDSS: Add Scalar Single-Precision Floating-Point Values. @@ -12570,14 +18840,21 @@ func VADDSD(mx, x, x1 operand.Op) (*avo.Instruction, error) { func VADDSS(mx, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VADDSS", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsM32(mx) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VADDSS", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VADDSS", - Operands: []operand.Op{mx, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VADDSUBPD: Packed Double-FP Add/Subtract. @@ -12591,16 +18868,35 @@ func VADDSS(mx, x, x1 operand.Op) (*avo.Instruction, error) { func VADDSUBPD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VADDSUBPD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VADDSUBPD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VADDSUBPD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VADDSUBPD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VADDSUBPD", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VADDSUBPS: Packed Single-FP Add/Subtract. @@ -12614,16 +18910,35 @@ func VADDSUBPD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VADDSUBPS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VADDSUBPS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VADDSUBPS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VADDSUBPS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VADDSUBPS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VADDSUBPS", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VAESDEC: Perform One Round of an AES Decryption Flow. @@ -12635,14 +18950,21 @@ func VADDSUBPS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VAESDEC(mx, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VAESDEC", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VAESDEC", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VAESDEC", - Operands: []operand.Op{mx, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VAESDECLAST: Perform Last Round of an AES Decryption Flow. @@ -12654,14 +18976,21 @@ func VAESDEC(mx, x, x1 operand.Op) (*avo.Instruction, error) { func VAESDECLAST(mx, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VAESDECLAST", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VAESDECLAST", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VAESDECLAST", - Operands: []operand.Op{mx, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VAESENC: Perform One Round of an AES Encryption Flow. @@ -12673,14 +19002,21 @@ func VAESDECLAST(mx, x, x1 operand.Op) (*avo.Instruction, error) { func VAESENC(mx, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VAESENC", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VAESENC", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VAESENC", - Operands: []operand.Op{mx, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VAESENCLAST: Perform Last Round of an AES Encryption Flow. @@ -12692,14 +19028,21 @@ func VAESENC(mx, x, x1 operand.Op) (*avo.Instruction, error) { func VAESENCLAST(mx, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VAESENCLAST", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VAESENCLAST", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VAESENCLAST", - Operands: []operand.Op{mx, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VAESIMC: Perform the AES InvMixColumn Transformation. @@ -12711,14 +19054,21 @@ func VAESENCLAST(mx, x, x1 operand.Op) (*avo.Instruction, error) { func VAESIMC(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "VAESIMC", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VAESIMC", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "VAESIMC", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // VAESKEYGENASSIST: AES Round Key Generation Assist. @@ -12730,14 +19080,21 @@ func VAESIMC(mx, x operand.Op) (*avo.Instruction, error) { func VAESKEYGENASSIST(i, mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "VAESKEYGENASSIST", + Operands: []operand.Op{i, mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil case operand.IsImm8(i) && operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VAESKEYGENASSIST", + Operands: []operand.Op{i, mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "VAESKEYGENASSIST", - Operands: []operand.Op{i, mx, x}, - }, nil + return nil, ErrBadOperandTypes } // VANDNPD: Bitwise Logical AND NOT of Packed Double-Precision Floating-Point Values. @@ -12751,16 +19108,35 @@ func VAESKEYGENASSIST(i, mx, x operand.Op) (*avo.Instruction, error) { func VANDNPD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VANDNPD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VANDNPD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VANDNPD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VANDNPD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VANDNPD", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VANDNPS: Bitwise Logical AND NOT of Packed Single-Precision Floating-Point Values. @@ -12774,16 +19150,35 @@ func VANDNPD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VANDNPS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VANDNPS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VANDNPS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VANDNPS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VANDNPS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VANDNPS", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VANDPD: Bitwise Logical AND of Packed Double-Precision Floating-Point Values. @@ -12797,16 +19192,35 @@ func VANDNPS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VANDPD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VANDPD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VANDPD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VANDPD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VANDPD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VANDPD", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VANDPS: Bitwise Logical AND of Packed Single-Precision Floating-Point Values. @@ -12820,16 +19234,35 @@ func VANDPD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VANDPS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VANDPS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VANDPS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VANDPS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VANDPS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VANDPS", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VBLENDPD: Blend Packed Double Precision Floating-Point Values. @@ -12843,16 +19276,35 @@ func VANDPS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VBLENDPD(i, mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VBLENDPD", + Operands: []operand.Op{i, mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsImm8(i) && operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VBLENDPD", + Operands: []operand.Op{i, mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsImm8(i) && operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VBLENDPD", + Operands: []operand.Op{i, mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsImm8(i) && operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VBLENDPD", + Operands: []operand.Op{i, mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VBLENDPD", - Operands: []operand.Op{i, mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VBLENDPS: Blend Packed Single Precision Floating-Point Values. @@ -12866,16 +19318,35 @@ func VBLENDPD(i, mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VBLENDPS(i, mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VBLENDPS", + Operands: []operand.Op{i, mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsImm8(i) && operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VBLENDPS", + Operands: []operand.Op{i, mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsImm8(i) && operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VBLENDPS", + Operands: []operand.Op{i, mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsImm8(i) && operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VBLENDPS", + Operands: []operand.Op{i, mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VBLENDPS", - Operands: []operand.Op{i, mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VBLENDVPD: Variable Blend Packed Double Precision Floating-Point Values. @@ -12889,16 +19360,35 @@ func VBLENDPS(i, mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VBLENDVPD(xy, mxy, xy1, xy2 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(xy) && operand.IsXmm(mxy) && operand.IsXmm(xy1) && operand.IsXmm(xy2): + return &avo.Instruction{ + Opcode: "VBLENDVPD", + Operands: []operand.Op{xy, mxy, xy1, xy2}, + Inputs: []operand.Op{xy, mxy, xy1}, + Outputs: []operand.Op{xy2}, + }, nil case operand.IsXmm(xy) && operand.IsM128(mxy) && operand.IsXmm(xy1) && operand.IsXmm(xy2): + return &avo.Instruction{ + Opcode: "VBLENDVPD", + Operands: []operand.Op{xy, mxy, xy1, xy2}, + Inputs: []operand.Op{xy, mxy, xy1}, + Outputs: []operand.Op{xy2}, + }, nil case operand.IsYmm(xy) && operand.IsYmm(mxy) && operand.IsYmm(xy1) && operand.IsYmm(xy2): + return &avo.Instruction{ + Opcode: "VBLENDVPD", + Operands: []operand.Op{xy, mxy, xy1, xy2}, + Inputs: []operand.Op{xy, mxy, xy1}, + Outputs: []operand.Op{xy2}, + }, nil case operand.IsYmm(xy) && operand.IsM256(mxy) && operand.IsYmm(xy1) && operand.IsYmm(xy2): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VBLENDVPD", + Operands: []operand.Op{xy, mxy, xy1, xy2}, + Inputs: []operand.Op{xy, mxy, xy1}, + Outputs: []operand.Op{xy2}, + }, nil } - return &avo.Instruction{ - Opcode: "VBLENDVPD", - Operands: []operand.Op{xy, mxy, xy1, xy2}, - }, nil + return nil, ErrBadOperandTypes } // VBLENDVPS: Variable Blend Packed Single Precision Floating-Point Values. @@ -12912,16 +19402,35 @@ func VBLENDVPD(xy, mxy, xy1, xy2 operand.Op) (*avo.Instruction, error) { func VBLENDVPS(xy, mxy, xy1, xy2 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(xy) && operand.IsXmm(mxy) && operand.IsXmm(xy1) && operand.IsXmm(xy2): + return &avo.Instruction{ + Opcode: "VBLENDVPS", + Operands: []operand.Op{xy, mxy, xy1, xy2}, + Inputs: []operand.Op{xy, mxy, xy1}, + Outputs: []operand.Op{xy2}, + }, nil case operand.IsXmm(xy) && operand.IsM128(mxy) && operand.IsXmm(xy1) && operand.IsXmm(xy2): + return &avo.Instruction{ + Opcode: "VBLENDVPS", + Operands: []operand.Op{xy, mxy, xy1, xy2}, + Inputs: []operand.Op{xy, mxy, xy1}, + Outputs: []operand.Op{xy2}, + }, nil case operand.IsYmm(xy) && operand.IsYmm(mxy) && operand.IsYmm(xy1) && operand.IsYmm(xy2): + return &avo.Instruction{ + Opcode: "VBLENDVPS", + Operands: []operand.Op{xy, mxy, xy1, xy2}, + Inputs: []operand.Op{xy, mxy, xy1}, + Outputs: []operand.Op{xy2}, + }, nil case operand.IsYmm(xy) && operand.IsM256(mxy) && operand.IsYmm(xy1) && operand.IsYmm(xy2): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VBLENDVPS", + Operands: []operand.Op{xy, mxy, xy1, xy2}, + Inputs: []operand.Op{xy, mxy, xy1}, + Outputs: []operand.Op{xy2}, + }, nil } - return &avo.Instruction{ - Opcode: "VBLENDVPS", - Operands: []operand.Op{xy, mxy, xy1, xy2}, - }, nil + return nil, ErrBadOperandTypes } // VBROADCASTF128: Broadcast 128 Bit of Floating-Point Data. @@ -12932,13 +19441,14 @@ func VBLENDVPS(xy, mxy, xy1, xy2 operand.Op) (*avo.Instruction, error) { func VBROADCASTF128(m, y operand.Op) (*avo.Instruction, error) { switch { case operand.IsM128(m) && operand.IsYmm(y): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VBROADCASTF128", + Operands: []operand.Op{m, y}, + Inputs: []operand.Op{m}, + Outputs: []operand.Op{y}, + }, nil } - return &avo.Instruction{ - Opcode: "VBROADCASTF128", - Operands: []operand.Op{m, y}, - }, nil + return nil, ErrBadOperandTypes } // VBROADCASTI128: Broadcast 128 Bits of Integer Data. @@ -12949,13 +19459,14 @@ func VBROADCASTF128(m, y operand.Op) (*avo.Instruction, error) { func VBROADCASTI128(m, y operand.Op) (*avo.Instruction, error) { switch { case operand.IsM128(m) && operand.IsYmm(y): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VBROADCASTI128", + Operands: []operand.Op{m, y}, + Inputs: []operand.Op{m}, + Outputs: []operand.Op{y}, + }, nil } - return &avo.Instruction{ - Opcode: "VBROADCASTI128", - Operands: []operand.Op{m, y}, - }, nil + return nil, ErrBadOperandTypes } // VBROADCASTSD: Broadcast Double-Precision Floating-Point Element. @@ -12967,14 +19478,21 @@ func VBROADCASTI128(m, y operand.Op) (*avo.Instruction, error) { func VBROADCASTSD(mx, y operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsYmm(y): + return &avo.Instruction{ + Opcode: "VBROADCASTSD", + Operands: []operand.Op{mx, y}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{y}, + }, nil case operand.IsM64(mx) && operand.IsYmm(y): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VBROADCASTSD", + Operands: []operand.Op{mx, y}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{y}, + }, nil } - return &avo.Instruction{ - Opcode: "VBROADCASTSD", - Operands: []operand.Op{mx, y}, - }, nil + return nil, ErrBadOperandTypes } // VBROADCASTSS: Broadcast Single-Precision Floating-Point Element. @@ -12988,16 +19506,35 @@ func VBROADCASTSD(mx, y operand.Op) (*avo.Instruction, error) { func VBROADCASTSS(mx, xy operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VBROADCASTSS", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM32(mx) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VBROADCASTSS", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsXmm(mx) && operand.IsYmm(xy): + return &avo.Instruction{ + Opcode: "VBROADCASTSS", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM32(mx) && operand.IsYmm(xy): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VBROADCASTSS", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil } - return &avo.Instruction{ - Opcode: "VBROADCASTSS", - Operands: []operand.Op{mx, xy}, - }, nil + return nil, ErrBadOperandTypes } // VCMPPD: Compare Packed Double-Precision Floating-Point Values. @@ -13011,16 +19548,35 @@ func VBROADCASTSS(mx, xy operand.Op) (*avo.Instruction, error) { func VCMPPD(i, mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VCMPPD", + Operands: []operand.Op{i, mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsImm8(i) && operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VCMPPD", + Operands: []operand.Op{i, mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsImm8(i) && operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VCMPPD", + Operands: []operand.Op{i, mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsImm8(i) && operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VCMPPD", + Operands: []operand.Op{i, mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VCMPPD", - Operands: []operand.Op{i, mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VCMPPS: Compare Packed Single-Precision Floating-Point Values. @@ -13034,16 +19590,35 @@ func VCMPPD(i, mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VCMPPS(i, mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VCMPPS", + Operands: []operand.Op{i, mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsImm8(i) && operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VCMPPS", + Operands: []operand.Op{i, mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsImm8(i) && operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VCMPPS", + Operands: []operand.Op{i, mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsImm8(i) && operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VCMPPS", + Operands: []operand.Op{i, mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VCMPPS", - Operands: []operand.Op{i, mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VCMPSD: Compare Scalar Double-Precision Floating-Point Values. @@ -13055,14 +19630,21 @@ func VCMPPS(i, mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VCMPSD(i, mx, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(mx) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VCMPSD", + Operands: []operand.Op{i, mx, x, x1}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsImm8(i) && operand.IsM64(mx) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VCMPSD", + Operands: []operand.Op{i, mx, x, x1}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VCMPSD", - Operands: []operand.Op{i, mx, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VCMPSS: Compare Scalar Single-Precision Floating-Point Values. @@ -13074,14 +19656,21 @@ func VCMPSD(i, mx, x, x1 operand.Op) (*avo.Instruction, error) { func VCMPSS(i, mx, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(mx) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VCMPSS", + Operands: []operand.Op{i, mx, x, x1}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsImm8(i) && operand.IsM32(mx) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VCMPSS", + Operands: []operand.Op{i, mx, x, x1}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VCMPSS", - Operands: []operand.Op{i, mx, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VCOMISD: Compare Scalar Ordered Double-Precision Floating-Point Values and Set EFLAGS. @@ -13093,14 +19682,21 @@ func VCMPSS(i, mx, x, x1 operand.Op) (*avo.Instruction, error) { func VCOMISD(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "VCOMISD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{}, + }, nil case operand.IsM64(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VCOMISD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "VCOMISD", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // VCOMISS: Compare Scalar Ordered Single-Precision Floating-Point Values and Set EFLAGS. @@ -13112,14 +19708,21 @@ func VCOMISD(mx, x operand.Op) (*avo.Instruction, error) { func VCOMISS(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "VCOMISS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{}, + }, nil case operand.IsM32(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VCOMISS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "VCOMISS", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // VCVTDQ2PD: Convert Packed Dword Integers to Packed Double-Precision FP Values. @@ -13133,16 +19736,35 @@ func VCOMISS(mx, x operand.Op) (*avo.Instruction, error) { func VCVTDQ2PD(mx, xy operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VCVTDQ2PD", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM64(mx) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VCVTDQ2PD", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsXmm(mx) && operand.IsYmm(xy): + return &avo.Instruction{ + Opcode: "VCVTDQ2PD", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM128(mx) && operand.IsYmm(xy): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VCVTDQ2PD", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil } - return &avo.Instruction{ - Opcode: "VCVTDQ2PD", - Operands: []operand.Op{mx, xy}, - }, nil + return nil, ErrBadOperandTypes } // VCVTDQ2PS: Convert Packed Dword Integers to Packed Single-Precision FP Values. @@ -13156,16 +19778,35 @@ func VCVTDQ2PD(mx, xy operand.Op) (*avo.Instruction, error) { func VCVTDQ2PS(mxy, xy operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VCVTDQ2PS", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VCVTDQ2PS", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy): + return &avo.Instruction{ + Opcode: "VCVTDQ2PS", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VCVTDQ2PS", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil } - return &avo.Instruction{ - Opcode: "VCVTDQ2PS", - Operands: []operand.Op{mxy, xy}, - }, nil + return nil, ErrBadOperandTypes } // VCVTPD2DQX: Convert Packed Double-Precision FP Values to Packed Dword Integers. @@ -13177,14 +19818,21 @@ func VCVTDQ2PS(mxy, xy operand.Op) (*avo.Instruction, error) { func VCVTPD2DQX(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "VCVTPD2DQX", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VCVTPD2DQX", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "VCVTPD2DQX", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // VCVTPD2DQY: Convert Packed Double-Precision FP Values to Packed Dword Integers. @@ -13196,14 +19844,21 @@ func VCVTPD2DQX(mx, x operand.Op) (*avo.Instruction, error) { func VCVTPD2DQY(my, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsYmm(my) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "VCVTPD2DQY", + Operands: []operand.Op{my, x}, + Inputs: []operand.Op{my}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM256(my) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VCVTPD2DQY", + Operands: []operand.Op{my, x}, + Inputs: []operand.Op{my}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "VCVTPD2DQY", - Operands: []operand.Op{my, x}, - }, nil + return nil, ErrBadOperandTypes } // VCVTPD2PSX: Convert Packed Double-Precision FP Values to Packed Single-Precision FP Values. @@ -13215,14 +19870,21 @@ func VCVTPD2DQY(my, x operand.Op) (*avo.Instruction, error) { func VCVTPD2PSX(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "VCVTPD2PSX", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VCVTPD2PSX", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "VCVTPD2PSX", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // VCVTPD2PSY: Convert Packed Double-Precision FP Values to Packed Single-Precision FP Values. @@ -13234,14 +19896,21 @@ func VCVTPD2PSX(mx, x operand.Op) (*avo.Instruction, error) { func VCVTPD2PSY(my, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsYmm(my) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "VCVTPD2PSY", + Operands: []operand.Op{my, x}, + Inputs: []operand.Op{my}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM256(my) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VCVTPD2PSY", + Operands: []operand.Op{my, x}, + Inputs: []operand.Op{my}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "VCVTPD2PSY", - Operands: []operand.Op{my, x}, - }, nil + return nil, ErrBadOperandTypes } // VCVTPH2PS: Convert Half-Precision FP Values to Single-Precision FP Values. @@ -13255,16 +19924,35 @@ func VCVTPD2PSY(my, x operand.Op) (*avo.Instruction, error) { func VCVTPH2PS(mx, xy operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VCVTPH2PS", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM64(mx) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VCVTPH2PS", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsXmm(mx) && operand.IsYmm(xy): + return &avo.Instruction{ + Opcode: "VCVTPH2PS", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM128(mx) && operand.IsYmm(xy): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VCVTPH2PS", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil } - return &avo.Instruction{ - Opcode: "VCVTPH2PS", - Operands: []operand.Op{mx, xy}, - }, nil + return nil, ErrBadOperandTypes } // VCVTPS2DQ: Convert Packed Single-Precision FP Values to Packed Dword Integers. @@ -13278,16 +19966,35 @@ func VCVTPH2PS(mx, xy operand.Op) (*avo.Instruction, error) { func VCVTPS2DQ(mxy, xy operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VCVTPS2DQ", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VCVTPS2DQ", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy): + return &avo.Instruction{ + Opcode: "VCVTPS2DQ", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VCVTPS2DQ", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil } - return &avo.Instruction{ - Opcode: "VCVTPS2DQ", - Operands: []operand.Op{mxy, xy}, - }, nil + return nil, ErrBadOperandTypes } // VCVTPS2PD: Convert Packed Single-Precision FP Values to Packed Double-Precision FP Values. @@ -13301,16 +20008,35 @@ func VCVTPS2DQ(mxy, xy operand.Op) (*avo.Instruction, error) { func VCVTPS2PD(mx, xy operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VCVTPS2PD", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM64(mx) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VCVTPS2PD", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsXmm(mx) && operand.IsYmm(xy): + return &avo.Instruction{ + Opcode: "VCVTPS2PD", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM128(mx) && operand.IsYmm(xy): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VCVTPS2PD", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil } - return &avo.Instruction{ - Opcode: "VCVTPS2PD", - Operands: []operand.Op{mx, xy}, - }, nil + return nil, ErrBadOperandTypes } // VCVTPS2PH: Convert Single-Precision FP value to Half-Precision FP value. @@ -13324,16 +20050,35 @@ func VCVTPS2PD(mx, xy operand.Op) (*avo.Instruction, error) { func VCVTPS2PH(i, xy, mx operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(xy) && operand.IsXmm(mx): + return &avo.Instruction{ + Opcode: "VCVTPS2PH", + Operands: []operand.Op{i, xy, mx}, + Inputs: []operand.Op{xy}, + Outputs: []operand.Op{mx}, + }, nil case operand.IsImm8(i) && operand.IsYmm(xy) && operand.IsXmm(mx): + return &avo.Instruction{ + Opcode: "VCVTPS2PH", + Operands: []operand.Op{i, xy, mx}, + Inputs: []operand.Op{xy}, + Outputs: []operand.Op{mx}, + }, nil case operand.IsImm8(i) && operand.IsXmm(xy) && operand.IsM64(mx): + return &avo.Instruction{ + Opcode: "VCVTPS2PH", + Operands: []operand.Op{i, xy, mx}, + Inputs: []operand.Op{xy}, + Outputs: []operand.Op{mx}, + }, nil case operand.IsImm8(i) && operand.IsYmm(xy) && operand.IsM128(mx): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VCVTPS2PH", + Operands: []operand.Op{i, xy, mx}, + Inputs: []operand.Op{xy}, + Outputs: []operand.Op{mx}, + }, nil } - return &avo.Instruction{ - Opcode: "VCVTPS2PH", - Operands: []operand.Op{i, xy, mx}, - }, nil + return nil, ErrBadOperandTypes } // VCVTSD2SI: Convert Scalar Double-Precision FP Value to Integer. @@ -13345,14 +20090,21 @@ func VCVTPS2PH(i, xy, mx operand.Op) (*avo.Instruction, error) { func VCVTSD2SI(mx, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsR32(r): + return &avo.Instruction{ + Opcode: "VCVTSD2SI", + Operands: []operand.Op{mx, r}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM64(mx) && operand.IsR32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VCVTSD2SI", + Operands: []operand.Op{mx, r}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "VCVTSD2SI", - Operands: []operand.Op{mx, r}, - }, nil + return nil, ErrBadOperandTypes } // VCVTSD2SIQ: Convert Scalar Double-Precision FP Value to Integer. @@ -13364,14 +20116,21 @@ func VCVTSD2SI(mx, r operand.Op) (*avo.Instruction, error) { func VCVTSD2SIQ(mx, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsR64(r): + return &avo.Instruction{ + Opcode: "VCVTSD2SIQ", + Operands: []operand.Op{mx, r}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM64(mx) && operand.IsR64(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VCVTSD2SIQ", + Operands: []operand.Op{mx, r}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "VCVTSD2SIQ", - Operands: []operand.Op{mx, r}, - }, nil + return nil, ErrBadOperandTypes } // VCVTSD2SS: Convert Scalar Double-Precision FP Value to Scalar Single-Precision FP Value. @@ -13383,14 +20142,21 @@ func VCVTSD2SIQ(mx, r operand.Op) (*avo.Instruction, error) { func VCVTSD2SS(mx, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VCVTSD2SS", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsM64(mx) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VCVTSD2SS", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VCVTSD2SS", - Operands: []operand.Op{mx, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VCVTSI2SDL: Convert Dword Integer to Scalar Double-Precision FP Value. @@ -13402,14 +20168,21 @@ func VCVTSD2SS(mx, x, x1 operand.Op) (*avo.Instruction, error) { func VCVTSI2SDL(mr, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsR32(mr) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VCVTSI2SDL", + Operands: []operand.Op{mr, x, x1}, + Inputs: []operand.Op{mr, x}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsM32(mr) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VCVTSI2SDL", + Operands: []operand.Op{mr, x, x1}, + Inputs: []operand.Op{mr, x}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VCVTSI2SDL", - Operands: []operand.Op{mr, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VCVTSI2SDQ: Convert Dword Integer to Scalar Double-Precision FP Value. @@ -13421,14 +20194,21 @@ func VCVTSI2SDL(mr, x, x1 operand.Op) (*avo.Instruction, error) { func VCVTSI2SDQ(mr, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsR64(mr) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VCVTSI2SDQ", + Operands: []operand.Op{mr, x, x1}, + Inputs: []operand.Op{mr, x}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsM64(mr) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VCVTSI2SDQ", + Operands: []operand.Op{mr, x, x1}, + Inputs: []operand.Op{mr, x}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VCVTSI2SDQ", - Operands: []operand.Op{mr, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VCVTSI2SSL: Convert Dword Integer to Scalar Single-Precision FP Value. @@ -13440,14 +20220,21 @@ func VCVTSI2SDQ(mr, x, x1 operand.Op) (*avo.Instruction, error) { func VCVTSI2SSL(mr, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsR32(mr) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VCVTSI2SSL", + Operands: []operand.Op{mr, x, x1}, + Inputs: []operand.Op{mr, x}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsM32(mr) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VCVTSI2SSL", + Operands: []operand.Op{mr, x, x1}, + Inputs: []operand.Op{mr, x}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VCVTSI2SSL", - Operands: []operand.Op{mr, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VCVTSI2SSQ: Convert Dword Integer to Scalar Single-Precision FP Value. @@ -13459,14 +20246,21 @@ func VCVTSI2SSL(mr, x, x1 operand.Op) (*avo.Instruction, error) { func VCVTSI2SSQ(mr, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsR64(mr) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VCVTSI2SSQ", + Operands: []operand.Op{mr, x, x1}, + Inputs: []operand.Op{mr, x}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsM64(mr) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VCVTSI2SSQ", + Operands: []operand.Op{mr, x, x1}, + Inputs: []operand.Op{mr, x}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VCVTSI2SSQ", - Operands: []operand.Op{mr, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VCVTSS2SD: Convert Scalar Single-Precision FP Value to Scalar Double-Precision FP Value. @@ -13478,14 +20272,21 @@ func VCVTSI2SSQ(mr, x, x1 operand.Op) (*avo.Instruction, error) { func VCVTSS2SD(mx, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VCVTSS2SD", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsM32(mx) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VCVTSS2SD", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VCVTSS2SD", - Operands: []operand.Op{mx, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VCVTSS2SI: Convert Scalar Single-Precision FP Value to Dword Integer. @@ -13497,14 +20298,21 @@ func VCVTSS2SD(mx, x, x1 operand.Op) (*avo.Instruction, error) { func VCVTSS2SI(mx, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsR32(r): + return &avo.Instruction{ + Opcode: "VCVTSS2SI", + Operands: []operand.Op{mx, r}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM32(mx) && operand.IsR32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VCVTSS2SI", + Operands: []operand.Op{mx, r}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "VCVTSS2SI", - Operands: []operand.Op{mx, r}, - }, nil + return nil, ErrBadOperandTypes } // VCVTSS2SIQ: Convert Scalar Single-Precision FP Value to Dword Integer. @@ -13516,14 +20324,21 @@ func VCVTSS2SI(mx, r operand.Op) (*avo.Instruction, error) { func VCVTSS2SIQ(mx, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsR64(r): + return &avo.Instruction{ + Opcode: "VCVTSS2SIQ", + Operands: []operand.Op{mx, r}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM32(mx) && operand.IsR64(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VCVTSS2SIQ", + Operands: []operand.Op{mx, r}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "VCVTSS2SIQ", - Operands: []operand.Op{mx, r}, - }, nil + return nil, ErrBadOperandTypes } // VCVTTPD2DQX: Convert with Truncation Packed Double-Precision FP Values to Packed Dword Integers. @@ -13535,14 +20350,21 @@ func VCVTSS2SIQ(mx, r operand.Op) (*avo.Instruction, error) { func VCVTTPD2DQX(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "VCVTTPD2DQX", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VCVTTPD2DQX", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "VCVTTPD2DQX", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // VCVTTPD2DQY: Convert with Truncation Packed Double-Precision FP Values to Packed Dword Integers. @@ -13554,14 +20376,21 @@ func VCVTTPD2DQX(mx, x operand.Op) (*avo.Instruction, error) { func VCVTTPD2DQY(my, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsYmm(my) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "VCVTTPD2DQY", + Operands: []operand.Op{my, x}, + Inputs: []operand.Op{my}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM256(my) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VCVTTPD2DQY", + Operands: []operand.Op{my, x}, + Inputs: []operand.Op{my}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "VCVTTPD2DQY", - Operands: []operand.Op{my, x}, - }, nil + return nil, ErrBadOperandTypes } // VCVTTPS2DQ: Convert with Truncation Packed Single-Precision FP Values to Packed Dword Integers. @@ -13575,16 +20404,35 @@ func VCVTTPD2DQY(my, x operand.Op) (*avo.Instruction, error) { func VCVTTPS2DQ(mxy, xy operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VCVTTPS2DQ", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VCVTTPS2DQ", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy): + return &avo.Instruction{ + Opcode: "VCVTTPS2DQ", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VCVTTPS2DQ", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil } - return &avo.Instruction{ - Opcode: "VCVTTPS2DQ", - Operands: []operand.Op{mxy, xy}, - }, nil + return nil, ErrBadOperandTypes } // VCVTTSD2SI: Convert with Truncation Scalar Double-Precision FP Value to Signed Integer. @@ -13596,14 +20444,21 @@ func VCVTTPS2DQ(mxy, xy operand.Op) (*avo.Instruction, error) { func VCVTTSD2SI(mx, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsR32(r): + return &avo.Instruction{ + Opcode: "VCVTTSD2SI", + Operands: []operand.Op{mx, r}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM64(mx) && operand.IsR32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VCVTTSD2SI", + Operands: []operand.Op{mx, r}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "VCVTTSD2SI", - Operands: []operand.Op{mx, r}, - }, nil + return nil, ErrBadOperandTypes } // VCVTTSD2SIQ: Convert with Truncation Scalar Double-Precision FP Value to Signed Integer. @@ -13615,14 +20470,21 @@ func VCVTTSD2SI(mx, r operand.Op) (*avo.Instruction, error) { func VCVTTSD2SIQ(mx, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsR64(r): + return &avo.Instruction{ + Opcode: "VCVTTSD2SIQ", + Operands: []operand.Op{mx, r}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM64(mx) && operand.IsR64(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VCVTTSD2SIQ", + Operands: []operand.Op{mx, r}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "VCVTTSD2SIQ", - Operands: []operand.Op{mx, r}, - }, nil + return nil, ErrBadOperandTypes } // VCVTTSS2SI: Convert with Truncation Scalar Single-Precision FP Value to Dword Integer. @@ -13634,14 +20496,21 @@ func VCVTTSD2SIQ(mx, r operand.Op) (*avo.Instruction, error) { func VCVTTSS2SI(mx, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsR32(r): + return &avo.Instruction{ + Opcode: "VCVTTSS2SI", + Operands: []operand.Op{mx, r}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM32(mx) && operand.IsR32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VCVTTSS2SI", + Operands: []operand.Op{mx, r}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "VCVTTSS2SI", - Operands: []operand.Op{mx, r}, - }, nil + return nil, ErrBadOperandTypes } // VCVTTSS2SIQ: Convert with Truncation Scalar Single-Precision FP Value to Dword Integer. @@ -13653,14 +20522,21 @@ func VCVTTSS2SI(mx, r operand.Op) (*avo.Instruction, error) { func VCVTTSS2SIQ(mx, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsR64(r): + return &avo.Instruction{ + Opcode: "VCVTTSS2SIQ", + Operands: []operand.Op{mx, r}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{r}, + }, nil case operand.IsM32(mx) && operand.IsR64(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VCVTTSS2SIQ", + Operands: []operand.Op{mx, r}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "VCVTTSS2SIQ", - Operands: []operand.Op{mx, r}, - }, nil + return nil, ErrBadOperandTypes } // VDIVPD: Divide Packed Double-Precision Floating-Point Values. @@ -13674,16 +20550,35 @@ func VCVTTSS2SIQ(mx, r operand.Op) (*avo.Instruction, error) { func VDIVPD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VDIVPD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VDIVPD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VDIVPD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VDIVPD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VDIVPD", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VDIVPS: Divide Packed Single-Precision Floating-Point Values. @@ -13697,16 +20592,35 @@ func VDIVPD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VDIVPS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VDIVPS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VDIVPS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VDIVPS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VDIVPS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VDIVPS", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VDIVSD: Divide Scalar Double-Precision Floating-Point Values. @@ -13718,14 +20632,21 @@ func VDIVPS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VDIVSD(mx, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VDIVSD", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsM64(mx) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VDIVSD", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VDIVSD", - Operands: []operand.Op{mx, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VDIVSS: Divide Scalar Single-Precision Floating-Point Values. @@ -13737,14 +20658,21 @@ func VDIVSD(mx, x, x1 operand.Op) (*avo.Instruction, error) { func VDIVSS(mx, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VDIVSS", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsM32(mx) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VDIVSS", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VDIVSS", - Operands: []operand.Op{mx, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VDPPD: Dot Product of Packed Double Precision Floating-Point Values. @@ -13756,14 +20684,21 @@ func VDIVSS(mx, x, x1 operand.Op) (*avo.Instruction, error) { func VDPPD(i, mx, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(mx) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VDPPD", + Operands: []operand.Op{i, mx, x, x1}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsImm8(i) && operand.IsM128(mx) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VDPPD", + Operands: []operand.Op{i, mx, x, x1}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VDPPD", - Operands: []operand.Op{i, mx, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VDPPS: Dot Product of Packed Single Precision Floating-Point Values. @@ -13777,16 +20712,35 @@ func VDPPD(i, mx, x, x1 operand.Op) (*avo.Instruction, error) { func VDPPS(i, mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VDPPS", + Operands: []operand.Op{i, mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsImm8(i) && operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VDPPS", + Operands: []operand.Op{i, mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsImm8(i) && operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VDPPS", + Operands: []operand.Op{i, mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsImm8(i) && operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VDPPS", + Operands: []operand.Op{i, mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VDPPS", - Operands: []operand.Op{i, mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VEXTRACTF128: Extract Packed Floating-Point Values. @@ -13798,14 +20752,21 @@ func VDPPS(i, mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VEXTRACTF128(i, y, mx operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsYmm(y) && operand.IsXmm(mx): + return &avo.Instruction{ + Opcode: "VEXTRACTF128", + Operands: []operand.Op{i, y, mx}, + Inputs: []operand.Op{y}, + Outputs: []operand.Op{mx}, + }, nil case operand.IsImm8(i) && operand.IsYmm(y) && operand.IsM128(mx): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VEXTRACTF128", + Operands: []operand.Op{i, y, mx}, + Inputs: []operand.Op{y}, + Outputs: []operand.Op{mx}, + }, nil } - return &avo.Instruction{ - Opcode: "VEXTRACTF128", - Operands: []operand.Op{i, y, mx}, - }, nil + return nil, ErrBadOperandTypes } // VEXTRACTI128: Extract Packed Integer Values. @@ -13817,14 +20778,21 @@ func VEXTRACTF128(i, y, mx operand.Op) (*avo.Instruction, error) { func VEXTRACTI128(i, y, mx operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsYmm(y) && operand.IsXmm(mx): + return &avo.Instruction{ + Opcode: "VEXTRACTI128", + Operands: []operand.Op{i, y, mx}, + Inputs: []operand.Op{y}, + Outputs: []operand.Op{mx}, + }, nil case operand.IsImm8(i) && operand.IsYmm(y) && operand.IsM128(mx): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VEXTRACTI128", + Operands: []operand.Op{i, y, mx}, + Inputs: []operand.Op{y}, + Outputs: []operand.Op{mx}, + }, nil } - return &avo.Instruction{ - Opcode: "VEXTRACTI128", - Operands: []operand.Op{i, y, mx}, - }, nil + return nil, ErrBadOperandTypes } // VEXTRACTPS: Extract Packed Single Precision Floating-Point Value. @@ -13836,14 +20804,21 @@ func VEXTRACTI128(i, y, mx operand.Op) (*avo.Instruction, error) { func VEXTRACTPS(i, x, mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(x) && operand.IsR32(mr): + return &avo.Instruction{ + Opcode: "VEXTRACTPS", + Operands: []operand.Op{i, x, mr}, + Inputs: []operand.Op{x}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(i) && operand.IsXmm(x) && operand.IsM32(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VEXTRACTPS", + Operands: []operand.Op{i, x, mr}, + Inputs: []operand.Op{x}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "VEXTRACTPS", - Operands: []operand.Op{i, x, mr}, - }, nil + return nil, ErrBadOperandTypes } // VFMADD132PD: Fused Multiply-Add of Packed Double-Precision Floating-Point Values. @@ -13857,16 +20832,35 @@ func VEXTRACTPS(i, x, mr operand.Op) (*avo.Instruction, error) { func VFMADD132PD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFMADD132PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFMADD132PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VFMADD132PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VFMADD132PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VFMADD132PD", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VFMADD132PS: Fused Multiply-Add of Packed Single-Precision Floating-Point Values. @@ -13880,16 +20874,35 @@ func VFMADD132PD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VFMADD132PS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFMADD132PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFMADD132PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VFMADD132PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VFMADD132PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VFMADD132PS", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VFMADD132SD: Fused Multiply-Add of Scalar Double-Precision Floating-Point Values. @@ -13901,14 +20914,21 @@ func VFMADD132PS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VFMADD132SD(mx, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VFMADD132SD", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x, x1}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsM64(mx) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VFMADD132SD", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x, x1}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VFMADD132SD", - Operands: []operand.Op{mx, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VFMADD132SS: Fused Multiply-Add of Scalar Single-Precision Floating-Point Values. @@ -13920,14 +20940,21 @@ func VFMADD132SD(mx, x, x1 operand.Op) (*avo.Instruction, error) { func VFMADD132SS(mx, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VFMADD132SS", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x, x1}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsM32(mx) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VFMADD132SS", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x, x1}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VFMADD132SS", - Operands: []operand.Op{mx, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VFMADD213PD: Fused Multiply-Add of Packed Double-Precision Floating-Point Values. @@ -13941,16 +20968,35 @@ func VFMADD132SS(mx, x, x1 operand.Op) (*avo.Instruction, error) { func VFMADD213PD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFMADD213PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFMADD213PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VFMADD213PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VFMADD213PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VFMADD213PD", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VFMADD213PS: Fused Multiply-Add of Packed Single-Precision Floating-Point Values. @@ -13964,16 +21010,35 @@ func VFMADD213PD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VFMADD213PS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFMADD213PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFMADD213PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VFMADD213PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VFMADD213PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VFMADD213PS", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VFMADD213SD: Fused Multiply-Add of Scalar Double-Precision Floating-Point Values. @@ -13985,14 +21050,21 @@ func VFMADD213PS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VFMADD213SD(mx, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VFMADD213SD", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x, x1}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsM64(mx) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VFMADD213SD", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x, x1}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VFMADD213SD", - Operands: []operand.Op{mx, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VFMADD213SS: Fused Multiply-Add of Scalar Single-Precision Floating-Point Values. @@ -14004,14 +21076,21 @@ func VFMADD213SD(mx, x, x1 operand.Op) (*avo.Instruction, error) { func VFMADD213SS(mx, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VFMADD213SS", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x, x1}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsM32(mx) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VFMADD213SS", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x, x1}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VFMADD213SS", - Operands: []operand.Op{mx, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VFMADD231PD: Fused Multiply-Add of Packed Double-Precision Floating-Point Values. @@ -14025,16 +21104,35 @@ func VFMADD213SS(mx, x, x1 operand.Op) (*avo.Instruction, error) { func VFMADD231PD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFMADD231PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFMADD231PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VFMADD231PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VFMADD231PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VFMADD231PD", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VFMADD231PS: Fused Multiply-Add of Packed Single-Precision Floating-Point Values. @@ -14048,16 +21146,35 @@ func VFMADD231PD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VFMADD231PS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFMADD231PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFMADD231PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VFMADD231PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VFMADD231PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VFMADD231PS", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VFMADD231SD: Fused Multiply-Add of Scalar Double-Precision Floating-Point Values. @@ -14069,14 +21186,21 @@ func VFMADD231PS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VFMADD231SD(mx, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VFMADD231SD", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x, x1}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsM64(mx) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VFMADD231SD", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x, x1}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VFMADD231SD", - Operands: []operand.Op{mx, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VFMADD231SS: Fused Multiply-Add of Scalar Single-Precision Floating-Point Values. @@ -14088,14 +21212,21 @@ func VFMADD231SD(mx, x, x1 operand.Op) (*avo.Instruction, error) { func VFMADD231SS(mx, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VFMADD231SS", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x, x1}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsM32(mx) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VFMADD231SS", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x, x1}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VFMADD231SS", - Operands: []operand.Op{mx, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VFMADDSUB132PD: Fused Multiply-Alternating Add/Subtract of Packed Double-Precision Floating-Point Values. @@ -14109,16 +21240,35 @@ func VFMADD231SS(mx, x, x1 operand.Op) (*avo.Instruction, error) { func VFMADDSUB132PD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFMADDSUB132PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFMADDSUB132PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VFMADDSUB132PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VFMADDSUB132PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VFMADDSUB132PD", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VFMADDSUB132PS: Fused Multiply-Alternating Add/Subtract of Packed Single-Precision Floating-Point Values. @@ -14132,16 +21282,35 @@ func VFMADDSUB132PD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VFMADDSUB132PS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFMADDSUB132PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFMADDSUB132PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VFMADDSUB132PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VFMADDSUB132PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VFMADDSUB132PS", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VFMADDSUB213PD: Fused Multiply-Alternating Add/Subtract of Packed Double-Precision Floating-Point Values. @@ -14155,16 +21324,35 @@ func VFMADDSUB132PS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VFMADDSUB213PD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFMADDSUB213PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFMADDSUB213PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VFMADDSUB213PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VFMADDSUB213PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VFMADDSUB213PD", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VFMADDSUB213PS: Fused Multiply-Alternating Add/Subtract of Packed Single-Precision Floating-Point Values. @@ -14178,16 +21366,35 @@ func VFMADDSUB213PD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VFMADDSUB213PS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFMADDSUB213PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFMADDSUB213PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VFMADDSUB213PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VFMADDSUB213PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VFMADDSUB213PS", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VFMADDSUB231PD: Fused Multiply-Alternating Add/Subtract of Packed Double-Precision Floating-Point Values. @@ -14201,16 +21408,35 @@ func VFMADDSUB213PS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VFMADDSUB231PD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFMADDSUB231PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFMADDSUB231PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VFMADDSUB231PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VFMADDSUB231PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VFMADDSUB231PD", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VFMADDSUB231PS: Fused Multiply-Alternating Add/Subtract of Packed Single-Precision Floating-Point Values. @@ -14224,16 +21450,35 @@ func VFMADDSUB231PD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VFMADDSUB231PS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFMADDSUB231PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFMADDSUB231PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VFMADDSUB231PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VFMADDSUB231PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VFMADDSUB231PS", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VFMSUB132PD: Fused Multiply-Subtract of Packed Double-Precision Floating-Point Values. @@ -14247,16 +21492,35 @@ func VFMADDSUB231PS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VFMSUB132PD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFMSUB132PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFMSUB132PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VFMSUB132PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VFMSUB132PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VFMSUB132PD", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VFMSUB132PS: Fused Multiply-Subtract of Packed Single-Precision Floating-Point Values. @@ -14270,16 +21534,35 @@ func VFMSUB132PD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VFMSUB132PS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFMSUB132PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFMSUB132PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VFMSUB132PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VFMSUB132PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VFMSUB132PS", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VFMSUB132SD: Fused Multiply-Subtract of Scalar Double-Precision Floating-Point Values. @@ -14291,14 +21574,21 @@ func VFMSUB132PS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VFMSUB132SD(mx, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VFMSUB132SD", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x, x1}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsM64(mx) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VFMSUB132SD", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x, x1}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VFMSUB132SD", - Operands: []operand.Op{mx, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VFMSUB132SS: Fused Multiply-Subtract of Scalar Single-Precision Floating-Point Values. @@ -14310,14 +21600,21 @@ func VFMSUB132SD(mx, x, x1 operand.Op) (*avo.Instruction, error) { func VFMSUB132SS(mx, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VFMSUB132SS", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x, x1}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsM32(mx) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VFMSUB132SS", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x, x1}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VFMSUB132SS", - Operands: []operand.Op{mx, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VFMSUB213PD: Fused Multiply-Subtract of Packed Double-Precision Floating-Point Values. @@ -14331,16 +21628,35 @@ func VFMSUB132SS(mx, x, x1 operand.Op) (*avo.Instruction, error) { func VFMSUB213PD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFMSUB213PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFMSUB213PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VFMSUB213PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VFMSUB213PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VFMSUB213PD", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VFMSUB213PS: Fused Multiply-Subtract of Packed Single-Precision Floating-Point Values. @@ -14354,16 +21670,35 @@ func VFMSUB213PD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VFMSUB213PS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFMSUB213PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFMSUB213PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VFMSUB213PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VFMSUB213PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VFMSUB213PS", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VFMSUB213SD: Fused Multiply-Subtract of Scalar Double-Precision Floating-Point Values. @@ -14375,14 +21710,21 @@ func VFMSUB213PS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VFMSUB213SD(mx, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VFMSUB213SD", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x, x1}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsM64(mx) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VFMSUB213SD", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x, x1}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VFMSUB213SD", - Operands: []operand.Op{mx, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VFMSUB213SS: Fused Multiply-Subtract of Scalar Single-Precision Floating-Point Values. @@ -14394,14 +21736,21 @@ func VFMSUB213SD(mx, x, x1 operand.Op) (*avo.Instruction, error) { func VFMSUB213SS(mx, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VFMSUB213SS", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x, x1}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsM32(mx) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VFMSUB213SS", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x, x1}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VFMSUB213SS", - Operands: []operand.Op{mx, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VFMSUB231PD: Fused Multiply-Subtract of Packed Double-Precision Floating-Point Values. @@ -14415,16 +21764,35 @@ func VFMSUB213SS(mx, x, x1 operand.Op) (*avo.Instruction, error) { func VFMSUB231PD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFMSUB231PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFMSUB231PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VFMSUB231PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VFMSUB231PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VFMSUB231PD", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VFMSUB231PS: Fused Multiply-Subtract of Packed Single-Precision Floating-Point Values. @@ -14438,16 +21806,35 @@ func VFMSUB231PD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VFMSUB231PS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFMSUB231PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFMSUB231PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VFMSUB231PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VFMSUB231PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VFMSUB231PS", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VFMSUB231SD: Fused Multiply-Subtract of Scalar Double-Precision Floating-Point Values. @@ -14459,14 +21846,21 @@ func VFMSUB231PS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VFMSUB231SD(mx, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VFMSUB231SD", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x, x1}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsM64(mx) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VFMSUB231SD", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x, x1}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VFMSUB231SD", - Operands: []operand.Op{mx, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VFMSUB231SS: Fused Multiply-Subtract of Scalar Single-Precision Floating-Point Values. @@ -14478,14 +21872,21 @@ func VFMSUB231SD(mx, x, x1 operand.Op) (*avo.Instruction, error) { func VFMSUB231SS(mx, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VFMSUB231SS", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x, x1}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsM32(mx) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VFMSUB231SS", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x, x1}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VFMSUB231SS", - Operands: []operand.Op{mx, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VFMSUBADD132PD: Fused Multiply-Alternating Subtract/Add of Packed Double-Precision Floating-Point Values. @@ -14499,16 +21900,35 @@ func VFMSUB231SS(mx, x, x1 operand.Op) (*avo.Instruction, error) { func VFMSUBADD132PD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFMSUBADD132PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFMSUBADD132PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VFMSUBADD132PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VFMSUBADD132PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VFMSUBADD132PD", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VFMSUBADD132PS: Fused Multiply-Alternating Subtract/Add of Packed Single-Precision Floating-Point Values. @@ -14522,16 +21942,35 @@ func VFMSUBADD132PD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VFMSUBADD132PS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFMSUBADD132PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFMSUBADD132PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VFMSUBADD132PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VFMSUBADD132PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VFMSUBADD132PS", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VFMSUBADD213PD: Fused Multiply-Alternating Subtract/Add of Packed Double-Precision Floating-Point Values. @@ -14545,16 +21984,35 @@ func VFMSUBADD132PS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VFMSUBADD213PD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFMSUBADD213PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFMSUBADD213PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VFMSUBADD213PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VFMSUBADD213PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VFMSUBADD213PD", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VFMSUBADD213PS: Fused Multiply-Alternating Subtract/Add of Packed Single-Precision Floating-Point Values. @@ -14568,16 +22026,35 @@ func VFMSUBADD213PD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VFMSUBADD213PS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFMSUBADD213PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFMSUBADD213PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VFMSUBADD213PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VFMSUBADD213PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VFMSUBADD213PS", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VFMSUBADD231PD: Fused Multiply-Alternating Subtract/Add of Packed Double-Precision Floating-Point Values. @@ -14591,16 +22068,35 @@ func VFMSUBADD213PS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VFMSUBADD231PD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFMSUBADD231PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFMSUBADD231PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VFMSUBADD231PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VFMSUBADD231PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VFMSUBADD231PD", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VFMSUBADD231PS: Fused Multiply-Alternating Subtract/Add of Packed Single-Precision Floating-Point Values. @@ -14614,16 +22110,35 @@ func VFMSUBADD231PD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VFMSUBADD231PS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFMSUBADD231PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFMSUBADD231PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VFMSUBADD231PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VFMSUBADD231PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VFMSUBADD231PS", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VFNMADD132PD: Fused Negative Multiply-Add of Packed Double-Precision Floating-Point Values. @@ -14637,16 +22152,35 @@ func VFMSUBADD231PS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VFNMADD132PD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFNMADD132PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFNMADD132PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VFNMADD132PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VFNMADD132PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VFNMADD132PD", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VFNMADD132PS: Fused Negative Multiply-Add of Packed Single-Precision Floating-Point Values. @@ -14660,16 +22194,35 @@ func VFNMADD132PD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VFNMADD132PS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFNMADD132PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFNMADD132PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VFNMADD132PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VFNMADD132PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VFNMADD132PS", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VFNMADD132SD: Fused Negative Multiply-Add of Scalar Double-Precision Floating-Point Values. @@ -14681,14 +22234,21 @@ func VFNMADD132PS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VFNMADD132SD(mx, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VFNMADD132SD", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x, x1}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsM64(mx) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VFNMADD132SD", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x, x1}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VFNMADD132SD", - Operands: []operand.Op{mx, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VFNMADD132SS: Fused Negative Multiply-Add of Scalar Single-Precision Floating-Point Values. @@ -14700,14 +22260,21 @@ func VFNMADD132SD(mx, x, x1 operand.Op) (*avo.Instruction, error) { func VFNMADD132SS(mx, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VFNMADD132SS", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x, x1}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsM32(mx) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VFNMADD132SS", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x, x1}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VFNMADD132SS", - Operands: []operand.Op{mx, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VFNMADD213PD: Fused Negative Multiply-Add of Packed Double-Precision Floating-Point Values. @@ -14721,16 +22288,35 @@ func VFNMADD132SS(mx, x, x1 operand.Op) (*avo.Instruction, error) { func VFNMADD213PD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFNMADD213PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFNMADD213PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VFNMADD213PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VFNMADD213PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VFNMADD213PD", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VFNMADD213PS: Fused Negative Multiply-Add of Packed Single-Precision Floating-Point Values. @@ -14744,16 +22330,35 @@ func VFNMADD213PD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VFNMADD213PS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFNMADD213PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFNMADD213PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VFNMADD213PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VFNMADD213PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VFNMADD213PS", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VFNMADD213SD: Fused Negative Multiply-Add of Scalar Double-Precision Floating-Point Values. @@ -14765,14 +22370,21 @@ func VFNMADD213PS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VFNMADD213SD(mx, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VFNMADD213SD", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x, x1}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsM64(mx) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VFNMADD213SD", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x, x1}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VFNMADD213SD", - Operands: []operand.Op{mx, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VFNMADD213SS: Fused Negative Multiply-Add of Scalar Single-Precision Floating-Point Values. @@ -14784,14 +22396,21 @@ func VFNMADD213SD(mx, x, x1 operand.Op) (*avo.Instruction, error) { func VFNMADD213SS(mx, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VFNMADD213SS", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x, x1}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsM32(mx) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VFNMADD213SS", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x, x1}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VFNMADD213SS", - Operands: []operand.Op{mx, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VFNMADD231PD: Fused Negative Multiply-Add of Packed Double-Precision Floating-Point Values. @@ -14805,16 +22424,35 @@ func VFNMADD213SS(mx, x, x1 operand.Op) (*avo.Instruction, error) { func VFNMADD231PD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFNMADD231PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFNMADD231PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VFNMADD231PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VFNMADD231PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VFNMADD231PD", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VFNMADD231PS: Fused Negative Multiply-Add of Packed Single-Precision Floating-Point Values. @@ -14828,16 +22466,35 @@ func VFNMADD231PD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VFNMADD231PS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFNMADD231PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFNMADD231PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VFNMADD231PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VFNMADD231PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VFNMADD231PS", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VFNMADD231SD: Fused Negative Multiply-Add of Scalar Double-Precision Floating-Point Values. @@ -14849,14 +22506,21 @@ func VFNMADD231PS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VFNMADD231SD(mx, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VFNMADD231SD", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x, x1}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsM64(mx) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VFNMADD231SD", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x, x1}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VFNMADD231SD", - Operands: []operand.Op{mx, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VFNMADD231SS: Fused Negative Multiply-Add of Scalar Single-Precision Floating-Point Values. @@ -14868,14 +22532,21 @@ func VFNMADD231SD(mx, x, x1 operand.Op) (*avo.Instruction, error) { func VFNMADD231SS(mx, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VFNMADD231SS", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x, x1}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsM32(mx) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VFNMADD231SS", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x, x1}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VFNMADD231SS", - Operands: []operand.Op{mx, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VFNMSUB132PD: Fused Negative Multiply-Subtract of Packed Double-Precision Floating-Point Values. @@ -14889,16 +22560,35 @@ func VFNMADD231SS(mx, x, x1 operand.Op) (*avo.Instruction, error) { func VFNMSUB132PD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFNMSUB132PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFNMSUB132PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VFNMSUB132PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VFNMSUB132PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VFNMSUB132PD", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VFNMSUB132PS: Fused Negative Multiply-Subtract of Packed Single-Precision Floating-Point Values. @@ -14912,16 +22602,35 @@ func VFNMSUB132PD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VFNMSUB132PS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFNMSUB132PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFNMSUB132PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VFNMSUB132PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VFNMSUB132PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VFNMSUB132PS", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VFNMSUB132SD: Fused Negative Multiply-Subtract of Scalar Double-Precision Floating-Point Values. @@ -14933,14 +22642,21 @@ func VFNMSUB132PS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VFNMSUB132SD(mx, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VFNMSUB132SD", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x, x1}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsM64(mx) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VFNMSUB132SD", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x, x1}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VFNMSUB132SD", - Operands: []operand.Op{mx, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VFNMSUB132SS: Fused Negative Multiply-Subtract of Scalar Single-Precision Floating-Point Values. @@ -14952,14 +22668,21 @@ func VFNMSUB132SD(mx, x, x1 operand.Op) (*avo.Instruction, error) { func VFNMSUB132SS(mx, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VFNMSUB132SS", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x, x1}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsM32(mx) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VFNMSUB132SS", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x, x1}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VFNMSUB132SS", - Operands: []operand.Op{mx, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VFNMSUB213PD: Fused Negative Multiply-Subtract of Packed Double-Precision Floating-Point Values. @@ -14973,16 +22696,35 @@ func VFNMSUB132SS(mx, x, x1 operand.Op) (*avo.Instruction, error) { func VFNMSUB213PD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFNMSUB213PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFNMSUB213PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VFNMSUB213PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VFNMSUB213PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VFNMSUB213PD", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VFNMSUB213PS: Fused Negative Multiply-Subtract of Packed Single-Precision Floating-Point Values. @@ -14996,16 +22738,35 @@ func VFNMSUB213PD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VFNMSUB213PS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFNMSUB213PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFNMSUB213PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VFNMSUB213PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VFNMSUB213PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VFNMSUB213PS", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VFNMSUB213SD: Fused Negative Multiply-Subtract of Scalar Double-Precision Floating-Point Values. @@ -15017,14 +22778,21 @@ func VFNMSUB213PS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VFNMSUB213SD(mx, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VFNMSUB213SD", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x, x1}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsM64(mx) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VFNMSUB213SD", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x, x1}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VFNMSUB213SD", - Operands: []operand.Op{mx, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VFNMSUB213SS: Fused Negative Multiply-Subtract of Scalar Single-Precision Floating-Point Values. @@ -15036,14 +22804,21 @@ func VFNMSUB213SD(mx, x, x1 operand.Op) (*avo.Instruction, error) { func VFNMSUB213SS(mx, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VFNMSUB213SS", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x, x1}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsM32(mx) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VFNMSUB213SS", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x, x1}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VFNMSUB213SS", - Operands: []operand.Op{mx, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VFNMSUB231PD: Fused Negative Multiply-Subtract of Packed Double-Precision Floating-Point Values. @@ -15057,16 +22832,35 @@ func VFNMSUB213SS(mx, x, x1 operand.Op) (*avo.Instruction, error) { func VFNMSUB231PD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFNMSUB231PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFNMSUB231PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VFNMSUB231PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VFNMSUB231PD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VFNMSUB231PD", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VFNMSUB231PS: Fused Negative Multiply-Subtract of Packed Single-Precision Floating-Point Values. @@ -15080,16 +22874,35 @@ func VFNMSUB231PD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VFNMSUB231PS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFNMSUB231PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VFNMSUB231PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VFNMSUB231PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VFNMSUB231PS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy, xy1}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VFNMSUB231PS", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VFNMSUB231SD: Fused Negative Multiply-Subtract of Scalar Double-Precision Floating-Point Values. @@ -15101,14 +22914,21 @@ func VFNMSUB231PS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VFNMSUB231SD(mx, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VFNMSUB231SD", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x, x1}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsM64(mx) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VFNMSUB231SD", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x, x1}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VFNMSUB231SD", - Operands: []operand.Op{mx, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VFNMSUB231SS: Fused Negative Multiply-Subtract of Scalar Single-Precision Floating-Point Values. @@ -15120,14 +22940,21 @@ func VFNMSUB231SD(mx, x, x1 operand.Op) (*avo.Instruction, error) { func VFNMSUB231SS(mx, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VFNMSUB231SS", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x, x1}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsM32(mx) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VFNMSUB231SS", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x, x1}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VFNMSUB231SS", - Operands: []operand.Op{mx, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VGATHERDPD: Gather Packed Double-Precision Floating-Point Values Using Signed Doubleword Indices. @@ -15139,14 +22966,21 @@ func VFNMSUB231SS(mx, x, x1 operand.Op) (*avo.Instruction, error) { func VGATHERDPD(xy, v, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(xy) && operand.IsVm32x(v) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VGATHERDPD", + Operands: []operand.Op{xy, v, xy1}, + Inputs: []operand.Op{xy, v, xy1}, + Outputs: []operand.Op{xy, xy1}, + }, nil case operand.IsYmm(xy) && operand.IsVm32x(v) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VGATHERDPD", + Operands: []operand.Op{xy, v, xy1}, + Inputs: []operand.Op{xy, v, xy1}, + Outputs: []operand.Op{xy, xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VGATHERDPD", - Operands: []operand.Op{xy, v, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VGATHERDPS: Gather Packed Single-Precision Floating-Point Values Using Signed Doubleword Indices. @@ -15158,14 +22992,21 @@ func VGATHERDPD(xy, v, xy1 operand.Op) (*avo.Instruction, error) { func VGATHERDPS(xy, v, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(xy) && operand.IsVm32x(v) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VGATHERDPS", + Operands: []operand.Op{xy, v, xy1}, + Inputs: []operand.Op{xy, v, xy1}, + Outputs: []operand.Op{xy, xy1}, + }, nil case operand.IsYmm(xy) && operand.IsVm32y(v) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VGATHERDPS", + Operands: []operand.Op{xy, v, xy1}, + Inputs: []operand.Op{xy, v, xy1}, + Outputs: []operand.Op{xy, xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VGATHERDPS", - Operands: []operand.Op{xy, v, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VGATHERQPD: Gather Packed Double-Precision Floating-Point Values Using Signed Quadword Indices. @@ -15177,14 +23018,21 @@ func VGATHERDPS(xy, v, xy1 operand.Op) (*avo.Instruction, error) { func VGATHERQPD(xy, v, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(xy) && operand.IsVm64x(v) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VGATHERQPD", + Operands: []operand.Op{xy, v, xy1}, + Inputs: []operand.Op{xy, v, xy1}, + Outputs: []operand.Op{xy, xy1}, + }, nil case operand.IsYmm(xy) && operand.IsVm64y(v) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VGATHERQPD", + Operands: []operand.Op{xy, v, xy1}, + Inputs: []operand.Op{xy, v, xy1}, + Outputs: []operand.Op{xy, xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VGATHERQPD", - Operands: []operand.Op{xy, v, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VGATHERQPS: Gather Packed Single-Precision Floating-Point Values Using Signed Quadword Indices. @@ -15196,14 +23044,21 @@ func VGATHERQPD(xy, v, xy1 operand.Op) (*avo.Instruction, error) { func VGATHERQPS(x, v, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(x) && operand.IsVm64x(v) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VGATHERQPS", + Operands: []operand.Op{x, v, x1}, + Inputs: []operand.Op{x, v, x1}, + Outputs: []operand.Op{x, x1}, + }, nil case operand.IsXmm(x) && operand.IsVm64y(v) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VGATHERQPS", + Operands: []operand.Op{x, v, x1}, + Inputs: []operand.Op{x, v, x1}, + Outputs: []operand.Op{x, x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VGATHERQPS", - Operands: []operand.Op{x, v, x1}, - }, nil + return nil, ErrBadOperandTypes } // VHADDPD: Packed Double-FP Horizontal Add. @@ -15217,16 +23072,35 @@ func VGATHERQPS(x, v, x1 operand.Op) (*avo.Instruction, error) { func VHADDPD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VHADDPD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VHADDPD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VHADDPD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VHADDPD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VHADDPD", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VHADDPS: Packed Single-FP Horizontal Add. @@ -15240,16 +23114,35 @@ func VHADDPD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VHADDPS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VHADDPS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VHADDPS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VHADDPS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VHADDPS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VHADDPS", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VHSUBPD: Packed Double-FP Horizontal Subtract. @@ -15263,16 +23156,35 @@ func VHADDPS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VHSUBPD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VHSUBPD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VHSUBPD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VHSUBPD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VHSUBPD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VHSUBPD", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VHSUBPS: Packed Single-FP Horizontal Subtract. @@ -15286,16 +23198,35 @@ func VHSUBPD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VHSUBPS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VHSUBPS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VHSUBPS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VHSUBPS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VHSUBPS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VHSUBPS", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VINSERTF128: Insert Packed Floating-Point Values. @@ -15307,14 +23238,21 @@ func VHSUBPS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VINSERTF128(i, mx, y, y1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(mx) && operand.IsYmm(y) && operand.IsYmm(y1): + return &avo.Instruction{ + Opcode: "VINSERTF128", + Operands: []operand.Op{i, mx, y, y1}, + Inputs: []operand.Op{mx, y}, + Outputs: []operand.Op{y1}, + }, nil case operand.IsImm8(i) && operand.IsM128(mx) && operand.IsYmm(y) && operand.IsYmm(y1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VINSERTF128", + Operands: []operand.Op{i, mx, y, y1}, + Inputs: []operand.Op{mx, y}, + Outputs: []operand.Op{y1}, + }, nil } - return &avo.Instruction{ - Opcode: "VINSERTF128", - Operands: []operand.Op{i, mx, y, y1}, - }, nil + return nil, ErrBadOperandTypes } // VINSERTI128: Insert Packed Integer Values. @@ -15326,14 +23264,21 @@ func VINSERTF128(i, mx, y, y1 operand.Op) (*avo.Instruction, error) { func VINSERTI128(i, mx, y, y1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(mx) && operand.IsYmm(y) && operand.IsYmm(y1): + return &avo.Instruction{ + Opcode: "VINSERTI128", + Operands: []operand.Op{i, mx, y, y1}, + Inputs: []operand.Op{mx, y}, + Outputs: []operand.Op{y1}, + }, nil case operand.IsImm8(i) && operand.IsM128(mx) && operand.IsYmm(y) && operand.IsYmm(y1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VINSERTI128", + Operands: []operand.Op{i, mx, y, y1}, + Inputs: []operand.Op{mx, y}, + Outputs: []operand.Op{y1}, + }, nil } - return &avo.Instruction{ - Opcode: "VINSERTI128", - Operands: []operand.Op{i, mx, y, y1}, - }, nil + return nil, ErrBadOperandTypes } // VINSERTPS: Insert Packed Single Precision Floating-Point Value. @@ -15345,14 +23290,21 @@ func VINSERTI128(i, mx, y, y1 operand.Op) (*avo.Instruction, error) { func VINSERTPS(i, mx, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(mx) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VINSERTPS", + Operands: []operand.Op{i, mx, x, x1}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsImm8(i) && operand.IsM32(mx) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VINSERTPS", + Operands: []operand.Op{i, mx, x, x1}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VINSERTPS", - Operands: []operand.Op{i, mx, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VLDDQU: Load Unaligned Integer 128 Bits. @@ -15364,14 +23316,21 @@ func VINSERTPS(i, mx, x, x1 operand.Op) (*avo.Instruction, error) { func VLDDQU(m, xy operand.Op) (*avo.Instruction, error) { switch { case operand.IsM128(m) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VLDDQU", + Operands: []operand.Op{m, xy}, + Inputs: []operand.Op{m}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM256(m) && operand.IsYmm(xy): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VLDDQU", + Operands: []operand.Op{m, xy}, + Inputs: []operand.Op{m}, + Outputs: []operand.Op{xy}, + }, nil } - return &avo.Instruction{ - Opcode: "VLDDQU", - Operands: []operand.Op{m, xy}, - }, nil + return nil, ErrBadOperandTypes } // VLDMXCSR: Load MXCSR Register. @@ -15382,13 +23341,14 @@ func VLDDQU(m, xy operand.Op) (*avo.Instruction, error) { func VLDMXCSR(m operand.Op) (*avo.Instruction, error) { switch { case operand.IsM32(m): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VLDMXCSR", + Operands: []operand.Op{m}, + Inputs: []operand.Op{m}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "VLDMXCSR", - Operands: []operand.Op{m}, - }, nil + return nil, ErrBadOperandTypes } // VMASKMOVDQU: Store Selected Bytes of Double Quadword. @@ -15399,13 +23359,14 @@ func VLDMXCSR(m operand.Op) (*avo.Instruction, error) { func VMASKMOVDQU(x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VMASKMOVDQU", + Operands: []operand.Op{x, x1}, + Inputs: []operand.Op{x, x1}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "VMASKMOVDQU", - Operands: []operand.Op{x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VMASKMOVPD: Conditional Move Packed Double-Precision Floating-Point Values. @@ -15419,16 +23380,35 @@ func VMASKMOVDQU(x, x1 operand.Op) (*avo.Instruction, error) { func VMASKMOVPD(mxy, xy, mxy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(mxy1): + return &avo.Instruction{ + Opcode: "VMASKMOVPD", + Operands: []operand.Op{mxy, xy, mxy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{mxy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(mxy1): + return &avo.Instruction{ + Opcode: "VMASKMOVPD", + Operands: []operand.Op{mxy, xy, mxy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{mxy1}, + }, nil case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsM128(mxy1): + return &avo.Instruction{ + Opcode: "VMASKMOVPD", + Operands: []operand.Op{mxy, xy, mxy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{mxy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsM256(mxy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VMASKMOVPD", + Operands: []operand.Op{mxy, xy, mxy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{mxy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VMASKMOVPD", - Operands: []operand.Op{mxy, xy, mxy1}, - }, nil + return nil, ErrBadOperandTypes } // VMASKMOVPS: Conditional Move Packed Single-Precision Floating-Point Values. @@ -15442,16 +23422,35 @@ func VMASKMOVPD(mxy, xy, mxy1 operand.Op) (*avo.Instruction, error) { func VMASKMOVPS(mxy, xy, mxy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(mxy1): + return &avo.Instruction{ + Opcode: "VMASKMOVPS", + Operands: []operand.Op{mxy, xy, mxy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{mxy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(mxy1): + return &avo.Instruction{ + Opcode: "VMASKMOVPS", + Operands: []operand.Op{mxy, xy, mxy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{mxy1}, + }, nil case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsM128(mxy1): + return &avo.Instruction{ + Opcode: "VMASKMOVPS", + Operands: []operand.Op{mxy, xy, mxy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{mxy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsM256(mxy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VMASKMOVPS", + Operands: []operand.Op{mxy, xy, mxy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{mxy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VMASKMOVPS", - Operands: []operand.Op{mxy, xy, mxy1}, - }, nil + return nil, ErrBadOperandTypes } // VMAXPD: Return Maximum Packed Double-Precision Floating-Point Values. @@ -15465,16 +23464,35 @@ func VMASKMOVPS(mxy, xy, mxy1 operand.Op) (*avo.Instruction, error) { func VMAXPD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VMAXPD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VMAXPD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VMAXPD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VMAXPD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VMAXPD", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VMAXPS: Return Maximum Packed Single-Precision Floating-Point Values. @@ -15488,16 +23506,35 @@ func VMAXPD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VMAXPS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VMAXPS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VMAXPS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VMAXPS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VMAXPS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VMAXPS", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VMAXSD: Return Maximum Scalar Double-Precision Floating-Point Value. @@ -15509,14 +23546,21 @@ func VMAXPS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VMAXSD(mx, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VMAXSD", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsM64(mx) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VMAXSD", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VMAXSD", - Operands: []operand.Op{mx, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VMAXSS: Return Maximum Scalar Single-Precision Floating-Point Value. @@ -15528,14 +23572,21 @@ func VMAXSD(mx, x, x1 operand.Op) (*avo.Instruction, error) { func VMAXSS(mx, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VMAXSS", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsM32(mx) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VMAXSS", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VMAXSS", - Operands: []operand.Op{mx, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VMINPD: Return Minimum Packed Double-Precision Floating-Point Values. @@ -15549,16 +23600,35 @@ func VMAXSS(mx, x, x1 operand.Op) (*avo.Instruction, error) { func VMINPD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VMINPD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VMINPD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VMINPD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VMINPD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VMINPD", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VMINPS: Return Minimum Packed Single-Precision Floating-Point Values. @@ -15572,16 +23642,35 @@ func VMINPD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VMINPS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VMINPS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VMINPS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VMINPS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VMINPS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VMINPS", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VMINSD: Return Minimum Scalar Double-Precision Floating-Point Value. @@ -15593,14 +23682,21 @@ func VMINPS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VMINSD(mx, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VMINSD", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsM64(mx) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VMINSD", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VMINSD", - Operands: []operand.Op{mx, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VMINSS: Return Minimum Scalar Single-Precision Floating-Point Value. @@ -15612,14 +23708,21 @@ func VMINSD(mx, x, x1 operand.Op) (*avo.Instruction, error) { func VMINSS(mx, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VMINSS", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsM32(mx) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VMINSS", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VMINSS", - Operands: []operand.Op{mx, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VMOVAPD: Move Aligned Packed Double-Precision Floating-Point Values. @@ -15635,18 +23738,49 @@ func VMINSS(mx, x, x1 operand.Op) (*avo.Instruction, error) { func VMOVAPD(mxy, mxy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(mxy1): + return &avo.Instruction{ + Opcode: "VMOVAPD", + Operands: []operand.Op{mxy, mxy1}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{mxy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(mxy1): + return &avo.Instruction{ + Opcode: "VMOVAPD", + Operands: []operand.Op{mxy, mxy1}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{mxy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(mxy1): + return &avo.Instruction{ + Opcode: "VMOVAPD", + Operands: []operand.Op{mxy, mxy1}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{mxy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(mxy1): + return &avo.Instruction{ + Opcode: "VMOVAPD", + Operands: []operand.Op{mxy, mxy1}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{mxy1}, + }, nil case operand.IsXmm(mxy) && operand.IsM128(mxy1): + return &avo.Instruction{ + Opcode: "VMOVAPD", + Operands: []operand.Op{mxy, mxy1}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{mxy1}, + }, nil case operand.IsYmm(mxy) && operand.IsM256(mxy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VMOVAPD", + Operands: []operand.Op{mxy, mxy1}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{mxy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VMOVAPD", - Operands: []operand.Op{mxy, mxy1}, - }, nil + return nil, ErrBadOperandTypes } // VMOVAPS: Move Aligned Packed Single-Precision Floating-Point Values. @@ -15662,18 +23796,49 @@ func VMOVAPD(mxy, mxy1 operand.Op) (*avo.Instruction, error) { func VMOVAPS(mxy, mxy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(mxy1): + return &avo.Instruction{ + Opcode: "VMOVAPS", + Operands: []operand.Op{mxy, mxy1}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{mxy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(mxy1): + return &avo.Instruction{ + Opcode: "VMOVAPS", + Operands: []operand.Op{mxy, mxy1}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{mxy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(mxy1): + return &avo.Instruction{ + Opcode: "VMOVAPS", + Operands: []operand.Op{mxy, mxy1}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{mxy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(mxy1): + return &avo.Instruction{ + Opcode: "VMOVAPS", + Operands: []operand.Op{mxy, mxy1}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{mxy1}, + }, nil case operand.IsXmm(mxy) && operand.IsM128(mxy1): + return &avo.Instruction{ + Opcode: "VMOVAPS", + Operands: []operand.Op{mxy, mxy1}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{mxy1}, + }, nil case operand.IsYmm(mxy) && operand.IsM256(mxy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VMOVAPS", + Operands: []operand.Op{mxy, mxy1}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{mxy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VMOVAPS", - Operands: []operand.Op{mxy, mxy1}, - }, nil + return nil, ErrBadOperandTypes } // VMOVD: Move Doubleword. @@ -15687,16 +23852,35 @@ func VMOVAPS(mxy, mxy1 operand.Op) (*avo.Instruction, error) { func VMOVD(mrx, mrx1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mrx) && operand.IsR32(mrx1): + return &avo.Instruction{ + Opcode: "VMOVD", + Operands: []operand.Op{mrx, mrx1}, + Inputs: []operand.Op{mrx}, + Outputs: []operand.Op{mrx1}, + }, nil case operand.IsR32(mrx) && operand.IsXmm(mrx1): + return &avo.Instruction{ + Opcode: "VMOVD", + Operands: []operand.Op{mrx, mrx1}, + Inputs: []operand.Op{mrx}, + Outputs: []operand.Op{mrx1}, + }, nil case operand.IsM32(mrx) && operand.IsXmm(mrx1): + return &avo.Instruction{ + Opcode: "VMOVD", + Operands: []operand.Op{mrx, mrx1}, + Inputs: []operand.Op{mrx}, + Outputs: []operand.Op{mrx1}, + }, nil case operand.IsXmm(mrx) && operand.IsM32(mrx1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VMOVD", + Operands: []operand.Op{mrx, mrx1}, + Inputs: []operand.Op{mrx}, + Outputs: []operand.Op{mrx1}, + }, nil } - return &avo.Instruction{ - Opcode: "VMOVD", - Operands: []operand.Op{mrx, mrx1}, - }, nil + return nil, ErrBadOperandTypes } // VMOVDDUP: Move One Double-FP and Duplicate. @@ -15710,16 +23894,35 @@ func VMOVD(mrx, mrx1 operand.Op) (*avo.Instruction, error) { func VMOVDDUP(mxy, xy operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VMOVDDUP", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM64(mxy) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VMOVDDUP", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy): + return &avo.Instruction{ + Opcode: "VMOVDDUP", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VMOVDDUP", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil } - return &avo.Instruction{ - Opcode: "VMOVDDUP", - Operands: []operand.Op{mxy, xy}, - }, nil + return nil, ErrBadOperandTypes } // VMOVDQA: Move Aligned Double Quadword. @@ -15735,18 +23938,49 @@ func VMOVDDUP(mxy, xy operand.Op) (*avo.Instruction, error) { func VMOVDQA(mxy, mxy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(mxy1): + return &avo.Instruction{ + Opcode: "VMOVDQA", + Operands: []operand.Op{mxy, mxy1}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{mxy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(mxy1): + return &avo.Instruction{ + Opcode: "VMOVDQA", + Operands: []operand.Op{mxy, mxy1}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{mxy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(mxy1): + return &avo.Instruction{ + Opcode: "VMOVDQA", + Operands: []operand.Op{mxy, mxy1}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{mxy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(mxy1): + return &avo.Instruction{ + Opcode: "VMOVDQA", + Operands: []operand.Op{mxy, mxy1}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{mxy1}, + }, nil case operand.IsXmm(mxy) && operand.IsM128(mxy1): + return &avo.Instruction{ + Opcode: "VMOVDQA", + Operands: []operand.Op{mxy, mxy1}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{mxy1}, + }, nil case operand.IsYmm(mxy) && operand.IsM256(mxy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VMOVDQA", + Operands: []operand.Op{mxy, mxy1}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{mxy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VMOVDQA", - Operands: []operand.Op{mxy, mxy1}, - }, nil + return nil, ErrBadOperandTypes } // VMOVDQU: Move Unaligned Double Quadword. @@ -15762,18 +23996,49 @@ func VMOVDQA(mxy, mxy1 operand.Op) (*avo.Instruction, error) { func VMOVDQU(mxy, mxy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(mxy1): + return &avo.Instruction{ + Opcode: "VMOVDQU", + Operands: []operand.Op{mxy, mxy1}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{mxy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(mxy1): + return &avo.Instruction{ + Opcode: "VMOVDQU", + Operands: []operand.Op{mxy, mxy1}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{mxy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(mxy1): + return &avo.Instruction{ + Opcode: "VMOVDQU", + Operands: []operand.Op{mxy, mxy1}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{mxy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(mxy1): + return &avo.Instruction{ + Opcode: "VMOVDQU", + Operands: []operand.Op{mxy, mxy1}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{mxy1}, + }, nil case operand.IsXmm(mxy) && operand.IsM128(mxy1): + return &avo.Instruction{ + Opcode: "VMOVDQU", + Operands: []operand.Op{mxy, mxy1}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{mxy1}, + }, nil case operand.IsYmm(mxy) && operand.IsM256(mxy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VMOVDQU", + Operands: []operand.Op{mxy, mxy1}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{mxy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VMOVDQU", - Operands: []operand.Op{mxy, mxy1}, - }, nil + return nil, ErrBadOperandTypes } // VMOVHLPS: Move Packed Single-Precision Floating-Point Values High to Low. @@ -15784,13 +24049,14 @@ func VMOVDQU(mxy, mxy1 operand.Op) (*avo.Instruction, error) { func VMOVHLPS(x, x1, x2 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(x) && operand.IsXmm(x1) && operand.IsXmm(x2): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VMOVHLPS", + Operands: []operand.Op{x, x1, x2}, + Inputs: []operand.Op{x, x1}, + Outputs: []operand.Op{x2}, + }, nil } - return &avo.Instruction{ - Opcode: "VMOVHLPS", - Operands: []operand.Op{x, x1, x2}, - }, nil + return nil, ErrBadOperandTypes } // VMOVHPD: Move High Packed Double-Precision Floating-Point Value. @@ -15802,14 +24068,21 @@ func VMOVHLPS(x, x1, x2 operand.Op) (*avo.Instruction, error) { func VMOVHPD(ops ...operand.Op) (*avo.Instruction, error) { switch { case len(ops) == 2 && operand.IsXmm(ops[0]) && operand.IsM64(ops[1]): + return &avo.Instruction{ + Opcode: "VMOVHPD", + Operands: ops, + Inputs: []operand.Op{ops[0]}, + Outputs: []operand.Op{ops[1]}, + }, nil case len(ops) == 3 && operand.IsM64(ops[0]) && operand.IsXmm(ops[1]) && operand.IsXmm(ops[2]): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VMOVHPD", + Operands: ops, + Inputs: []operand.Op{ops[0], ops[1]}, + Outputs: []operand.Op{ops[2]}, + }, nil } - return &avo.Instruction{ - Opcode: "VMOVHPD", - Operands: ops, - }, nil + return nil, ErrBadOperandTypes } // VMOVHPS: Move High Packed Single-Precision Floating-Point Values. @@ -15821,14 +24094,21 @@ func VMOVHPD(ops ...operand.Op) (*avo.Instruction, error) { func VMOVHPS(ops ...operand.Op) (*avo.Instruction, error) { switch { case len(ops) == 2 && operand.IsXmm(ops[0]) && operand.IsM64(ops[1]): + return &avo.Instruction{ + Opcode: "VMOVHPS", + Operands: ops, + Inputs: []operand.Op{ops[0]}, + Outputs: []operand.Op{ops[1]}, + }, nil case len(ops) == 3 && operand.IsM64(ops[0]) && operand.IsXmm(ops[1]) && operand.IsXmm(ops[2]): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VMOVHPS", + Operands: ops, + Inputs: []operand.Op{ops[0], ops[1]}, + Outputs: []operand.Op{ops[2]}, + }, nil } - return &avo.Instruction{ - Opcode: "VMOVHPS", - Operands: ops, - }, nil + return nil, ErrBadOperandTypes } // VMOVLHPS: Move Packed Single-Precision Floating-Point Values Low to High. @@ -15839,13 +24119,14 @@ func VMOVHPS(ops ...operand.Op) (*avo.Instruction, error) { func VMOVLHPS(x, x1, x2 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(x) && operand.IsXmm(x1) && operand.IsXmm(x2): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VMOVLHPS", + Operands: []operand.Op{x, x1, x2}, + Inputs: []operand.Op{x, x1}, + Outputs: []operand.Op{x2}, + }, nil } - return &avo.Instruction{ - Opcode: "VMOVLHPS", - Operands: []operand.Op{x, x1, x2}, - }, nil + return nil, ErrBadOperandTypes } // VMOVLPD: Move Low Packed Double-Precision Floating-Point Value. @@ -15857,14 +24138,21 @@ func VMOVLHPS(x, x1, x2 operand.Op) (*avo.Instruction, error) { func VMOVLPD(ops ...operand.Op) (*avo.Instruction, error) { switch { case len(ops) == 2 && operand.IsXmm(ops[0]) && operand.IsM64(ops[1]): + return &avo.Instruction{ + Opcode: "VMOVLPD", + Operands: ops, + Inputs: []operand.Op{ops[0]}, + Outputs: []operand.Op{ops[1]}, + }, nil case len(ops) == 3 && operand.IsM64(ops[0]) && operand.IsXmm(ops[1]) && operand.IsXmm(ops[2]): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VMOVLPD", + Operands: ops, + Inputs: []operand.Op{ops[0], ops[1]}, + Outputs: []operand.Op{ops[2]}, + }, nil } - return &avo.Instruction{ - Opcode: "VMOVLPD", - Operands: ops, - }, nil + return nil, ErrBadOperandTypes } // VMOVLPS: Move Low Packed Single-Precision Floating-Point Values. @@ -15876,14 +24164,21 @@ func VMOVLPD(ops ...operand.Op) (*avo.Instruction, error) { func VMOVLPS(ops ...operand.Op) (*avo.Instruction, error) { switch { case len(ops) == 2 && operand.IsXmm(ops[0]) && operand.IsM64(ops[1]): + return &avo.Instruction{ + Opcode: "VMOVLPS", + Operands: ops, + Inputs: []operand.Op{ops[0]}, + Outputs: []operand.Op{ops[1]}, + }, nil case len(ops) == 3 && operand.IsM64(ops[0]) && operand.IsXmm(ops[1]) && operand.IsXmm(ops[2]): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VMOVLPS", + Operands: ops, + Inputs: []operand.Op{ops[0], ops[1]}, + Outputs: []operand.Op{ops[2]}, + }, nil } - return &avo.Instruction{ - Opcode: "VMOVLPS", - Operands: ops, - }, nil + return nil, ErrBadOperandTypes } // VMOVMSKPD: Extract Packed Double-Precision Floating-Point Sign Mask. @@ -15895,14 +24190,21 @@ func VMOVLPS(ops ...operand.Op) (*avo.Instruction, error) { func VMOVMSKPD(xy, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(xy) && operand.IsR32(r): + return &avo.Instruction{ + Opcode: "VMOVMSKPD", + Operands: []operand.Op{xy, r}, + Inputs: []operand.Op{xy}, + Outputs: []operand.Op{r}, + }, nil case operand.IsYmm(xy) && operand.IsR32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VMOVMSKPD", + Operands: []operand.Op{xy, r}, + Inputs: []operand.Op{xy}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "VMOVMSKPD", - Operands: []operand.Op{xy, r}, - }, nil + return nil, ErrBadOperandTypes } // VMOVMSKPS: Extract Packed Single-Precision Floating-Point Sign Mask. @@ -15914,14 +24216,21 @@ func VMOVMSKPD(xy, r operand.Op) (*avo.Instruction, error) { func VMOVMSKPS(xy, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(xy) && operand.IsR32(r): + return &avo.Instruction{ + Opcode: "VMOVMSKPS", + Operands: []operand.Op{xy, r}, + Inputs: []operand.Op{xy}, + Outputs: []operand.Op{r}, + }, nil case operand.IsYmm(xy) && operand.IsR32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VMOVMSKPS", + Operands: []operand.Op{xy, r}, + Inputs: []operand.Op{xy}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "VMOVMSKPS", - Operands: []operand.Op{xy, r}, - }, nil + return nil, ErrBadOperandTypes } // VMOVNTDQ: Store Double Quadword Using Non-Temporal Hint. @@ -15933,14 +24242,21 @@ func VMOVMSKPS(xy, r operand.Op) (*avo.Instruction, error) { func VMOVNTDQ(xy, m operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(xy) && operand.IsM128(m): + return &avo.Instruction{ + Opcode: "VMOVNTDQ", + Operands: []operand.Op{xy, m}, + Inputs: []operand.Op{xy}, + Outputs: []operand.Op{m}, + }, nil case operand.IsYmm(xy) && operand.IsM256(m): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VMOVNTDQ", + Operands: []operand.Op{xy, m}, + Inputs: []operand.Op{xy}, + Outputs: []operand.Op{m}, + }, nil } - return &avo.Instruction{ - Opcode: "VMOVNTDQ", - Operands: []operand.Op{xy, m}, - }, nil + return nil, ErrBadOperandTypes } // VMOVNTDQA: Load Double Quadword Non-Temporal Aligned Hint. @@ -15952,14 +24268,21 @@ func VMOVNTDQ(xy, m operand.Op) (*avo.Instruction, error) { func VMOVNTDQA(m, xy operand.Op) (*avo.Instruction, error) { switch { case operand.IsM128(m) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VMOVNTDQA", + Operands: []operand.Op{m, xy}, + Inputs: []operand.Op{m}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM256(m) && operand.IsYmm(xy): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VMOVNTDQA", + Operands: []operand.Op{m, xy}, + Inputs: []operand.Op{m}, + Outputs: []operand.Op{xy}, + }, nil } - return &avo.Instruction{ - Opcode: "VMOVNTDQA", - Operands: []operand.Op{m, xy}, - }, nil + return nil, ErrBadOperandTypes } // VMOVNTPD: Store Packed Double-Precision Floating-Point Values Using Non-Temporal Hint. @@ -15971,14 +24294,21 @@ func VMOVNTDQA(m, xy operand.Op) (*avo.Instruction, error) { func VMOVNTPD(xy, m operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(xy) && operand.IsM128(m): + return &avo.Instruction{ + Opcode: "VMOVNTPD", + Operands: []operand.Op{xy, m}, + Inputs: []operand.Op{xy}, + Outputs: []operand.Op{m}, + }, nil case operand.IsYmm(xy) && operand.IsM256(m): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VMOVNTPD", + Operands: []operand.Op{xy, m}, + Inputs: []operand.Op{xy}, + Outputs: []operand.Op{m}, + }, nil } - return &avo.Instruction{ - Opcode: "VMOVNTPD", - Operands: []operand.Op{xy, m}, - }, nil + return nil, ErrBadOperandTypes } // VMOVNTPS: Store Packed Single-Precision Floating-Point Values Using Non-Temporal Hint. @@ -15990,14 +24320,21 @@ func VMOVNTPD(xy, m operand.Op) (*avo.Instruction, error) { func VMOVNTPS(xy, m operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(xy) && operand.IsM128(m): + return &avo.Instruction{ + Opcode: "VMOVNTPS", + Operands: []operand.Op{xy, m}, + Inputs: []operand.Op{xy}, + Outputs: []operand.Op{m}, + }, nil case operand.IsYmm(xy) && operand.IsM256(m): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VMOVNTPS", + Operands: []operand.Op{xy, m}, + Inputs: []operand.Op{xy}, + Outputs: []operand.Op{m}, + }, nil } - return &avo.Instruction{ - Opcode: "VMOVNTPS", - Operands: []operand.Op{xy, m}, - }, nil + return nil, ErrBadOperandTypes } // VMOVQ: Move Quadword. @@ -16012,17 +24349,42 @@ func VMOVNTPS(xy, m operand.Op) (*avo.Instruction, error) { func VMOVQ(mrx, mrx1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mrx) && operand.IsR64(mrx1): + return &avo.Instruction{ + Opcode: "VMOVQ", + Operands: []operand.Op{mrx, mrx1}, + Inputs: []operand.Op{mrx}, + Outputs: []operand.Op{mrx1}, + }, nil case operand.IsR64(mrx) && operand.IsXmm(mrx1): + return &avo.Instruction{ + Opcode: "VMOVQ", + Operands: []operand.Op{mrx, mrx1}, + Inputs: []operand.Op{mrx}, + Outputs: []operand.Op{mrx1}, + }, nil case operand.IsXmm(mrx) && operand.IsXmm(mrx1): + return &avo.Instruction{ + Opcode: "VMOVQ", + Operands: []operand.Op{mrx, mrx1}, + Inputs: []operand.Op{mrx}, + Outputs: []operand.Op{mrx1}, + }, nil case operand.IsM64(mrx) && operand.IsXmm(mrx1): + return &avo.Instruction{ + Opcode: "VMOVQ", + Operands: []operand.Op{mrx, mrx1}, + Inputs: []operand.Op{mrx}, + Outputs: []operand.Op{mrx1}, + }, nil case operand.IsXmm(mrx) && operand.IsM64(mrx1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VMOVQ", + Operands: []operand.Op{mrx, mrx1}, + Inputs: []operand.Op{mrx}, + Outputs: []operand.Op{mrx1}, + }, nil } - return &avo.Instruction{ - Opcode: "VMOVQ", - Operands: []operand.Op{mrx, mrx1}, - }, nil + return nil, ErrBadOperandTypes } // VMOVSD: Move Scalar Double-Precision Floating-Point Value. @@ -16035,15 +24397,28 @@ func VMOVQ(mrx, mrx1 operand.Op) (*avo.Instruction, error) { func VMOVSD(ops ...operand.Op) (*avo.Instruction, error) { switch { case len(ops) == 2 && operand.IsM64(ops[0]) && operand.IsXmm(ops[1]): + return &avo.Instruction{ + Opcode: "VMOVSD", + Operands: ops, + Inputs: []operand.Op{ops[0]}, + Outputs: []operand.Op{ops[1]}, + }, nil case len(ops) == 2 && operand.IsXmm(ops[0]) && operand.IsM64(ops[1]): + return &avo.Instruction{ + Opcode: "VMOVSD", + Operands: ops, + Inputs: []operand.Op{ops[0]}, + Outputs: []operand.Op{ops[1]}, + }, nil case len(ops) == 3 && operand.IsXmm(ops[0]) && operand.IsXmm(ops[1]) && operand.IsXmm(ops[2]): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VMOVSD", + Operands: ops, + Inputs: []operand.Op{ops[0], ops[1]}, + Outputs: []operand.Op{ops[2]}, + }, nil } - return &avo.Instruction{ - Opcode: "VMOVSD", - Operands: ops, - }, nil + return nil, ErrBadOperandTypes } // VMOVSHDUP: Move Packed Single-FP High and Duplicate. @@ -16057,16 +24432,35 @@ func VMOVSD(ops ...operand.Op) (*avo.Instruction, error) { func VMOVSHDUP(mxy, xy operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VMOVSHDUP", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VMOVSHDUP", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy): + return &avo.Instruction{ + Opcode: "VMOVSHDUP", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VMOVSHDUP", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil } - return &avo.Instruction{ - Opcode: "VMOVSHDUP", - Operands: []operand.Op{mxy, xy}, - }, nil + return nil, ErrBadOperandTypes } // VMOVSLDUP: Move Packed Single-FP Low and Duplicate. @@ -16080,16 +24474,35 @@ func VMOVSHDUP(mxy, xy operand.Op) (*avo.Instruction, error) { func VMOVSLDUP(mxy, xy operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VMOVSLDUP", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VMOVSLDUP", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy): + return &avo.Instruction{ + Opcode: "VMOVSLDUP", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VMOVSLDUP", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil } - return &avo.Instruction{ - Opcode: "VMOVSLDUP", - Operands: []operand.Op{mxy, xy}, - }, nil + return nil, ErrBadOperandTypes } // VMOVSS: Move Scalar Single-Precision Floating-Point Values. @@ -16102,15 +24515,28 @@ func VMOVSLDUP(mxy, xy operand.Op) (*avo.Instruction, error) { func VMOVSS(ops ...operand.Op) (*avo.Instruction, error) { switch { case len(ops) == 2 && operand.IsM32(ops[0]) && operand.IsXmm(ops[1]): + return &avo.Instruction{ + Opcode: "VMOVSS", + Operands: ops, + Inputs: []operand.Op{ops[0]}, + Outputs: []operand.Op{ops[1]}, + }, nil case len(ops) == 2 && operand.IsXmm(ops[0]) && operand.IsM32(ops[1]): + return &avo.Instruction{ + Opcode: "VMOVSS", + Operands: ops, + Inputs: []operand.Op{ops[0]}, + Outputs: []operand.Op{ops[1]}, + }, nil case len(ops) == 3 && operand.IsXmm(ops[0]) && operand.IsXmm(ops[1]) && operand.IsXmm(ops[2]): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VMOVSS", + Operands: ops, + Inputs: []operand.Op{ops[0], ops[1]}, + Outputs: []operand.Op{ops[2]}, + }, nil } - return &avo.Instruction{ - Opcode: "VMOVSS", - Operands: ops, - }, nil + return nil, ErrBadOperandTypes } // VMOVUPD: Move Unaligned Packed Double-Precision Floating-Point Values. @@ -16126,18 +24552,49 @@ func VMOVSS(ops ...operand.Op) (*avo.Instruction, error) { func VMOVUPD(mxy, mxy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(mxy1): + return &avo.Instruction{ + Opcode: "VMOVUPD", + Operands: []operand.Op{mxy, mxy1}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{mxy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(mxy1): + return &avo.Instruction{ + Opcode: "VMOVUPD", + Operands: []operand.Op{mxy, mxy1}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{mxy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(mxy1): + return &avo.Instruction{ + Opcode: "VMOVUPD", + Operands: []operand.Op{mxy, mxy1}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{mxy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(mxy1): + return &avo.Instruction{ + Opcode: "VMOVUPD", + Operands: []operand.Op{mxy, mxy1}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{mxy1}, + }, nil case operand.IsXmm(mxy) && operand.IsM128(mxy1): + return &avo.Instruction{ + Opcode: "VMOVUPD", + Operands: []operand.Op{mxy, mxy1}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{mxy1}, + }, nil case operand.IsYmm(mxy) && operand.IsM256(mxy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VMOVUPD", + Operands: []operand.Op{mxy, mxy1}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{mxy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VMOVUPD", - Operands: []operand.Op{mxy, mxy1}, - }, nil + return nil, ErrBadOperandTypes } // VMOVUPS: Move Unaligned Packed Single-Precision Floating-Point Values. @@ -16153,18 +24610,49 @@ func VMOVUPD(mxy, mxy1 operand.Op) (*avo.Instruction, error) { func VMOVUPS(mxy, mxy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(mxy1): + return &avo.Instruction{ + Opcode: "VMOVUPS", + Operands: []operand.Op{mxy, mxy1}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{mxy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(mxy1): + return &avo.Instruction{ + Opcode: "VMOVUPS", + Operands: []operand.Op{mxy, mxy1}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{mxy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(mxy1): + return &avo.Instruction{ + Opcode: "VMOVUPS", + Operands: []operand.Op{mxy, mxy1}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{mxy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(mxy1): + return &avo.Instruction{ + Opcode: "VMOVUPS", + Operands: []operand.Op{mxy, mxy1}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{mxy1}, + }, nil case operand.IsXmm(mxy) && operand.IsM128(mxy1): + return &avo.Instruction{ + Opcode: "VMOVUPS", + Operands: []operand.Op{mxy, mxy1}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{mxy1}, + }, nil case operand.IsYmm(mxy) && operand.IsM256(mxy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VMOVUPS", + Operands: []operand.Op{mxy, mxy1}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{mxy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VMOVUPS", - Operands: []operand.Op{mxy, mxy1}, - }, nil + return nil, ErrBadOperandTypes } // VMPSADBW: Compute Multiple Packed Sums of Absolute Difference. @@ -16178,16 +24666,35 @@ func VMOVUPS(mxy, mxy1 operand.Op) (*avo.Instruction, error) { func VMPSADBW(i, mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VMPSADBW", + Operands: []operand.Op{i, mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsImm8(i) && operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VMPSADBW", + Operands: []operand.Op{i, mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsImm8(i) && operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VMPSADBW", + Operands: []operand.Op{i, mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsImm8(i) && operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VMPSADBW", + Operands: []operand.Op{i, mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VMPSADBW", - Operands: []operand.Op{i, mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VMULPD: Multiply Packed Double-Precision Floating-Point Values. @@ -16201,16 +24708,35 @@ func VMPSADBW(i, mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VMULPD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VMULPD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VMULPD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VMULPD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VMULPD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VMULPD", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VMULPS: Multiply Packed Single-Precision Floating-Point Values. @@ -16224,16 +24750,35 @@ func VMULPD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VMULPS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VMULPS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VMULPS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VMULPS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VMULPS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VMULPS", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VMULSD: Multiply Scalar Double-Precision Floating-Point Values. @@ -16245,14 +24790,21 @@ func VMULPS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VMULSD(mx, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VMULSD", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsM64(mx) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VMULSD", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VMULSD", - Operands: []operand.Op{mx, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VMULSS: Multiply Scalar Single-Precision Floating-Point Values. @@ -16264,14 +24816,21 @@ func VMULSD(mx, x, x1 operand.Op) (*avo.Instruction, error) { func VMULSS(mx, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VMULSS", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsM32(mx) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VMULSS", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VMULSS", - Operands: []operand.Op{mx, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VORPD: Bitwise Logical OR of Double-Precision Floating-Point Values. @@ -16285,16 +24844,35 @@ func VMULSS(mx, x, x1 operand.Op) (*avo.Instruction, error) { func VORPD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VORPD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VORPD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VORPD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VORPD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VORPD", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VORPS: Bitwise Logical OR of Single-Precision Floating-Point Values. @@ -16308,16 +24886,35 @@ func VORPD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VORPS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VORPS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VORPS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VORPS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VORPS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VORPS", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPABSB: Packed Absolute Value of Byte Integers. @@ -16331,16 +24928,35 @@ func VORPS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPABSB(mxy, xy operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VPABSB", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VPABSB", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy): + return &avo.Instruction{ + Opcode: "VPABSB", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPABSB", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil } - return &avo.Instruction{ - Opcode: "VPABSB", - Operands: []operand.Op{mxy, xy}, - }, nil + return nil, ErrBadOperandTypes } // VPABSD: Packed Absolute Value of Doubleword Integers. @@ -16354,16 +24970,35 @@ func VPABSB(mxy, xy operand.Op) (*avo.Instruction, error) { func VPABSD(mxy, xy operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VPABSD", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VPABSD", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy): + return &avo.Instruction{ + Opcode: "VPABSD", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPABSD", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil } - return &avo.Instruction{ - Opcode: "VPABSD", - Operands: []operand.Op{mxy, xy}, - }, nil + return nil, ErrBadOperandTypes } // VPABSW: Packed Absolute Value of Word Integers. @@ -16377,16 +25012,35 @@ func VPABSD(mxy, xy operand.Op) (*avo.Instruction, error) { func VPABSW(mxy, xy operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VPABSW", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VPABSW", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy): + return &avo.Instruction{ + Opcode: "VPABSW", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPABSW", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil } - return &avo.Instruction{ - Opcode: "VPABSW", - Operands: []operand.Op{mxy, xy}, - }, nil + return nil, ErrBadOperandTypes } // VPACKSSDW: Pack Doublewords into Words with Signed Saturation. @@ -16400,16 +25054,35 @@ func VPABSW(mxy, xy operand.Op) (*avo.Instruction, error) { func VPACKSSDW(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPACKSSDW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPACKSSDW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPACKSSDW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPACKSSDW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPACKSSDW", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPACKSSWB: Pack Words into Bytes with Signed Saturation. @@ -16423,16 +25096,35 @@ func VPACKSSDW(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPACKSSWB(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPACKSSWB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPACKSSWB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPACKSSWB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPACKSSWB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPACKSSWB", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPACKUSDW: Pack Doublewords into Words with Unsigned Saturation. @@ -16446,16 +25138,35 @@ func VPACKSSWB(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPACKUSDW(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPACKUSDW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPACKUSDW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPACKUSDW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPACKUSDW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPACKUSDW", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPACKUSWB: Pack Words into Bytes with Unsigned Saturation. @@ -16469,16 +25180,35 @@ func VPACKUSDW(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPACKUSWB(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPACKUSWB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPACKUSWB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPACKUSWB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPACKUSWB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPACKUSWB", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPADDB: Add Packed Byte Integers. @@ -16492,16 +25222,35 @@ func VPACKUSWB(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPADDB(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPADDB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPADDB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPADDB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPADDB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPADDB", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPADDD: Add Packed Doubleword Integers. @@ -16515,16 +25264,35 @@ func VPADDB(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPADDD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPADDD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPADDD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPADDD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPADDD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPADDD", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPADDQ: Add Packed Quadword Integers. @@ -16538,16 +25306,35 @@ func VPADDD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPADDQ(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPADDQ", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPADDQ", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPADDQ", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPADDQ", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPADDQ", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPADDSB: Add Packed Signed Byte Integers with Signed Saturation. @@ -16561,16 +25348,35 @@ func VPADDQ(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPADDSB(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPADDSB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPADDSB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPADDSB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPADDSB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPADDSB", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPADDSW: Add Packed Signed Word Integers with Signed Saturation. @@ -16584,16 +25390,35 @@ func VPADDSB(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPADDSW(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPADDSW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPADDSW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPADDSW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPADDSW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPADDSW", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPADDUSB: Add Packed Unsigned Byte Integers with Unsigned Saturation. @@ -16607,16 +25432,35 @@ func VPADDSW(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPADDUSB(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPADDUSB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPADDUSB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPADDUSB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPADDUSB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPADDUSB", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPADDUSW: Add Packed Unsigned Word Integers with Unsigned Saturation. @@ -16630,16 +25474,35 @@ func VPADDUSB(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPADDUSW(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPADDUSW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPADDUSW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPADDUSW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPADDUSW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPADDUSW", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPADDW: Add Packed Word Integers. @@ -16653,16 +25516,35 @@ func VPADDUSW(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPADDW(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPADDW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPADDW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPADDW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPADDW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPADDW", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPALIGNR: Packed Align Right. @@ -16676,16 +25558,35 @@ func VPADDW(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPALIGNR(i, mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPALIGNR", + Operands: []operand.Op{i, mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsImm8(i) && operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPALIGNR", + Operands: []operand.Op{i, mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsImm8(i) && operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPALIGNR", + Operands: []operand.Op{i, mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsImm8(i) && operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPALIGNR", + Operands: []operand.Op{i, mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPALIGNR", - Operands: []operand.Op{i, mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPAND: Packed Bitwise Logical AND. @@ -16699,16 +25600,35 @@ func VPALIGNR(i, mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPAND(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPAND", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPAND", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPAND", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPAND", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPAND", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPANDN: Packed Bitwise Logical AND NOT. @@ -16722,16 +25642,35 @@ func VPAND(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPANDN(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPANDN", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPANDN", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPANDN", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPANDN", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPANDN", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPAVGB: Average Packed Byte Integers. @@ -16745,16 +25684,35 @@ func VPANDN(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPAVGB(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPAVGB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPAVGB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPAVGB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPAVGB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPAVGB", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPAVGW: Average Packed Word Integers. @@ -16768,16 +25726,35 @@ func VPAVGB(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPAVGW(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPAVGW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPAVGW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPAVGW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPAVGW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPAVGW", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPBLENDD: Blend Packed Doublewords. @@ -16791,16 +25768,35 @@ func VPAVGW(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPBLENDD(i, mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPBLENDD", + Operands: []operand.Op{i, mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsImm8(i) && operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPBLENDD", + Operands: []operand.Op{i, mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsImm8(i) && operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPBLENDD", + Operands: []operand.Op{i, mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsImm8(i) && operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPBLENDD", + Operands: []operand.Op{i, mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPBLENDD", - Operands: []operand.Op{i, mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPBLENDVB: Variable Blend Packed Bytes. @@ -16814,16 +25810,35 @@ func VPBLENDD(i, mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPBLENDVB(xy, mxy, xy1, xy2 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(xy) && operand.IsXmm(mxy) && operand.IsXmm(xy1) && operand.IsXmm(xy2): + return &avo.Instruction{ + Opcode: "VPBLENDVB", + Operands: []operand.Op{xy, mxy, xy1, xy2}, + Inputs: []operand.Op{xy, mxy, xy1}, + Outputs: []operand.Op{xy2}, + }, nil case operand.IsXmm(xy) && operand.IsM128(mxy) && operand.IsXmm(xy1) && operand.IsXmm(xy2): + return &avo.Instruction{ + Opcode: "VPBLENDVB", + Operands: []operand.Op{xy, mxy, xy1, xy2}, + Inputs: []operand.Op{xy, mxy, xy1}, + Outputs: []operand.Op{xy2}, + }, nil case operand.IsYmm(xy) && operand.IsYmm(mxy) && operand.IsYmm(xy1) && operand.IsYmm(xy2): + return &avo.Instruction{ + Opcode: "VPBLENDVB", + Operands: []operand.Op{xy, mxy, xy1, xy2}, + Inputs: []operand.Op{xy, mxy, xy1}, + Outputs: []operand.Op{xy2}, + }, nil case operand.IsYmm(xy) && operand.IsM256(mxy) && operand.IsYmm(xy1) && operand.IsYmm(xy2): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPBLENDVB", + Operands: []operand.Op{xy, mxy, xy1, xy2}, + Inputs: []operand.Op{xy, mxy, xy1}, + Outputs: []operand.Op{xy2}, + }, nil } - return &avo.Instruction{ - Opcode: "VPBLENDVB", - Operands: []operand.Op{xy, mxy, xy1, xy2}, - }, nil + return nil, ErrBadOperandTypes } // VPBLENDW: Blend Packed Words. @@ -16837,16 +25852,35 @@ func VPBLENDVB(xy, mxy, xy1, xy2 operand.Op) (*avo.Instruction, error) { func VPBLENDW(i, mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPBLENDW", + Operands: []operand.Op{i, mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsImm8(i) && operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPBLENDW", + Operands: []operand.Op{i, mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsImm8(i) && operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPBLENDW", + Operands: []operand.Op{i, mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsImm8(i) && operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPBLENDW", + Operands: []operand.Op{i, mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPBLENDW", - Operands: []operand.Op{i, mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPBROADCASTB: Broadcast Byte Integer. @@ -16860,16 +25894,35 @@ func VPBLENDW(i, mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPBROADCASTB(mx, xy operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VPBROADCASTB", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM8(mx) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VPBROADCASTB", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsXmm(mx) && operand.IsYmm(xy): + return &avo.Instruction{ + Opcode: "VPBROADCASTB", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM8(mx) && operand.IsYmm(xy): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPBROADCASTB", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil } - return &avo.Instruction{ - Opcode: "VPBROADCASTB", - Operands: []operand.Op{mx, xy}, - }, nil + return nil, ErrBadOperandTypes } // VPBROADCASTD: Broadcast Doubleword Integer. @@ -16883,16 +25936,35 @@ func VPBROADCASTB(mx, xy operand.Op) (*avo.Instruction, error) { func VPBROADCASTD(mx, xy operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VPBROADCASTD", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM32(mx) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VPBROADCASTD", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsXmm(mx) && operand.IsYmm(xy): + return &avo.Instruction{ + Opcode: "VPBROADCASTD", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM32(mx) && operand.IsYmm(xy): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPBROADCASTD", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil } - return &avo.Instruction{ - Opcode: "VPBROADCASTD", - Operands: []operand.Op{mx, xy}, - }, nil + return nil, ErrBadOperandTypes } // VPBROADCASTQ: Broadcast Quadword Integer. @@ -16906,16 +25978,35 @@ func VPBROADCASTD(mx, xy operand.Op) (*avo.Instruction, error) { func VPBROADCASTQ(mx, xy operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VPBROADCASTQ", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM64(mx) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VPBROADCASTQ", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsXmm(mx) && operand.IsYmm(xy): + return &avo.Instruction{ + Opcode: "VPBROADCASTQ", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM64(mx) && operand.IsYmm(xy): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPBROADCASTQ", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil } - return &avo.Instruction{ - Opcode: "VPBROADCASTQ", - Operands: []operand.Op{mx, xy}, - }, nil + return nil, ErrBadOperandTypes } // VPBROADCASTW: Broadcast Word Integer. @@ -16929,16 +26020,35 @@ func VPBROADCASTQ(mx, xy operand.Op) (*avo.Instruction, error) { func VPBROADCASTW(mx, xy operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VPBROADCASTW", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM16(mx) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VPBROADCASTW", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsXmm(mx) && operand.IsYmm(xy): + return &avo.Instruction{ + Opcode: "VPBROADCASTW", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM16(mx) && operand.IsYmm(xy): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPBROADCASTW", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil } - return &avo.Instruction{ - Opcode: "VPBROADCASTW", - Operands: []operand.Op{mx, xy}, - }, nil + return nil, ErrBadOperandTypes } // VPCLMULQDQ: Carry-Less Quadword Multiplication. @@ -16950,14 +26060,21 @@ func VPBROADCASTW(mx, xy operand.Op) (*avo.Instruction, error) { func VPCLMULQDQ(i, mx, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(mx) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VPCLMULQDQ", + Operands: []operand.Op{i, mx, x, x1}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsImm8(i) && operand.IsM128(mx) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPCLMULQDQ", + Operands: []operand.Op{i, mx, x, x1}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPCLMULQDQ", - Operands: []operand.Op{i, mx, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VPCMPEQB: Compare Packed Byte Data for Equality. @@ -16971,16 +26088,35 @@ func VPCLMULQDQ(i, mx, x, x1 operand.Op) (*avo.Instruction, error) { func VPCMPEQB(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPCMPEQB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPCMPEQB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPCMPEQB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPCMPEQB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPCMPEQB", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPCMPEQD: Compare Packed Doubleword Data for Equality. @@ -16994,16 +26130,35 @@ func VPCMPEQB(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPCMPEQD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPCMPEQD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPCMPEQD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPCMPEQD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPCMPEQD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPCMPEQD", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPCMPEQQ: Compare Packed Quadword Data for Equality. @@ -17017,16 +26172,35 @@ func VPCMPEQD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPCMPEQQ(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPCMPEQQ", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPCMPEQQ", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPCMPEQQ", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPCMPEQQ", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPCMPEQQ", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPCMPEQW: Compare Packed Word Data for Equality. @@ -17040,16 +26214,35 @@ func VPCMPEQQ(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPCMPEQW(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPCMPEQW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPCMPEQW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPCMPEQW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPCMPEQW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPCMPEQW", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPCMPESTRI: Packed Compare Explicit Length Strings, Return Index. @@ -17061,14 +26254,21 @@ func VPCMPEQW(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPCMPESTRI(i, mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "VPCMPESTRI", + Operands: []operand.Op{i, mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{}, + }, nil case operand.IsImm8(i) && operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPCMPESTRI", + Operands: []operand.Op{i, mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "VPCMPESTRI", - Operands: []operand.Op{i, mx, x}, - }, nil + return nil, ErrBadOperandTypes } // VPCMPESTRM: Packed Compare Explicit Length Strings, Return Mask. @@ -17080,14 +26280,21 @@ func VPCMPESTRI(i, mx, x operand.Op) (*avo.Instruction, error) { func VPCMPESTRM(i, mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "VPCMPESTRM", + Operands: []operand.Op{i, mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{}, + }, nil case operand.IsImm8(i) && operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPCMPESTRM", + Operands: []operand.Op{i, mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "VPCMPESTRM", - Operands: []operand.Op{i, mx, x}, - }, nil + return nil, ErrBadOperandTypes } // VPCMPGTB: Compare Packed Signed Byte Integers for Greater Than. @@ -17101,16 +26308,35 @@ func VPCMPESTRM(i, mx, x operand.Op) (*avo.Instruction, error) { func VPCMPGTB(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPCMPGTB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPCMPGTB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPCMPGTB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPCMPGTB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPCMPGTB", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPCMPGTD: Compare Packed Signed Doubleword Integers for Greater Than. @@ -17124,16 +26350,35 @@ func VPCMPGTB(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPCMPGTD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPCMPGTD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPCMPGTD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPCMPGTD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPCMPGTD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPCMPGTD", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPCMPGTQ: Compare Packed Data for Greater Than. @@ -17147,16 +26392,35 @@ func VPCMPGTD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPCMPGTQ(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPCMPGTQ", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPCMPGTQ", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPCMPGTQ", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPCMPGTQ", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPCMPGTQ", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPCMPGTW: Compare Packed Signed Word Integers for Greater Than. @@ -17170,16 +26434,35 @@ func VPCMPGTQ(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPCMPGTW(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPCMPGTW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPCMPGTW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPCMPGTW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPCMPGTW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPCMPGTW", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPCMPISTRI: Packed Compare Implicit Length Strings, Return Index. @@ -17191,14 +26474,21 @@ func VPCMPGTW(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPCMPISTRI(i, mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "VPCMPISTRI", + Operands: []operand.Op{i, mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{}, + }, nil case operand.IsImm8(i) && operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPCMPISTRI", + Operands: []operand.Op{i, mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "VPCMPISTRI", - Operands: []operand.Op{i, mx, x}, - }, nil + return nil, ErrBadOperandTypes } // VPCMPISTRM: Packed Compare Implicit Length Strings, Return Mask. @@ -17210,14 +26500,21 @@ func VPCMPISTRI(i, mx, x operand.Op) (*avo.Instruction, error) { func VPCMPISTRM(i, mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "VPCMPISTRM", + Operands: []operand.Op{i, mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{}, + }, nil case operand.IsImm8(i) && operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPCMPISTRM", + Operands: []operand.Op{i, mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "VPCMPISTRM", - Operands: []operand.Op{i, mx, x}, - }, nil + return nil, ErrBadOperandTypes } // VPERM2F128: Permute Floating-Point Values. @@ -17229,14 +26526,21 @@ func VPCMPISTRM(i, mx, x operand.Op) (*avo.Instruction, error) { func VPERM2F128(i, my, y, y1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsYmm(my) && operand.IsYmm(y) && operand.IsYmm(y1): + return &avo.Instruction{ + Opcode: "VPERM2F128", + Operands: []operand.Op{i, my, y, y1}, + Inputs: []operand.Op{my, y}, + Outputs: []operand.Op{y1}, + }, nil case operand.IsImm8(i) && operand.IsM256(my) && operand.IsYmm(y) && operand.IsYmm(y1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPERM2F128", + Operands: []operand.Op{i, my, y, y1}, + Inputs: []operand.Op{my, y}, + Outputs: []operand.Op{y1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPERM2F128", - Operands: []operand.Op{i, my, y, y1}, - }, nil + return nil, ErrBadOperandTypes } // VPERM2I128: Permute 128-Bit Integer Values. @@ -17248,14 +26552,21 @@ func VPERM2F128(i, my, y, y1 operand.Op) (*avo.Instruction, error) { func VPERM2I128(i, my, y, y1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsYmm(my) && operand.IsYmm(y) && operand.IsYmm(y1): + return &avo.Instruction{ + Opcode: "VPERM2I128", + Operands: []operand.Op{i, my, y, y1}, + Inputs: []operand.Op{my, y}, + Outputs: []operand.Op{y1}, + }, nil case operand.IsImm8(i) && operand.IsM256(my) && operand.IsYmm(y) && operand.IsYmm(y1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPERM2I128", + Operands: []operand.Op{i, my, y, y1}, + Inputs: []operand.Op{my, y}, + Outputs: []operand.Op{y1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPERM2I128", - Operands: []operand.Op{i, my, y, y1}, - }, nil + return nil, ErrBadOperandTypes } // VPERMD: Permute Doubleword Integers. @@ -17267,14 +26578,21 @@ func VPERM2I128(i, my, y, y1 operand.Op) (*avo.Instruction, error) { func VPERMD(my, y, y1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsYmm(my) && operand.IsYmm(y) && operand.IsYmm(y1): + return &avo.Instruction{ + Opcode: "VPERMD", + Operands: []operand.Op{my, y, y1}, + Inputs: []operand.Op{my, y}, + Outputs: []operand.Op{y1}, + }, nil case operand.IsM256(my) && operand.IsYmm(y) && operand.IsYmm(y1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPERMD", + Operands: []operand.Op{my, y, y1}, + Inputs: []operand.Op{my, y}, + Outputs: []operand.Op{y1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPERMD", - Operands: []operand.Op{my, y, y1}, - }, nil + return nil, ErrBadOperandTypes } // VPERMILPD: Permute Double-Precision Floating-Point Values. @@ -17292,20 +26610,63 @@ func VPERMD(my, y, y1 operand.Op) (*avo.Instruction, error) { func VPERMILPD(imxy, mxy, xy operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(imxy) && operand.IsXmm(mxy) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VPERMILPD", + Operands: []operand.Op{imxy, mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsXmm(imxy) && operand.IsXmm(mxy) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VPERMILPD", + Operands: []operand.Op{imxy, mxy, xy}, + Inputs: []operand.Op{imxy, mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM128(imxy) && operand.IsXmm(mxy) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VPERMILPD", + Operands: []operand.Op{imxy, mxy, xy}, + Inputs: []operand.Op{imxy, mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsImm8(imxy) && operand.IsM128(mxy) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VPERMILPD", + Operands: []operand.Op{imxy, mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsImm8(imxy) && operand.IsYmm(mxy) && operand.IsYmm(xy): + return &avo.Instruction{ + Opcode: "VPERMILPD", + Operands: []operand.Op{imxy, mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsYmm(imxy) && operand.IsYmm(mxy) && operand.IsYmm(xy): + return &avo.Instruction{ + Opcode: "VPERMILPD", + Operands: []operand.Op{imxy, mxy, xy}, + Inputs: []operand.Op{imxy, mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM256(imxy) && operand.IsYmm(mxy) && operand.IsYmm(xy): + return &avo.Instruction{ + Opcode: "VPERMILPD", + Operands: []operand.Op{imxy, mxy, xy}, + Inputs: []operand.Op{imxy, mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsImm8(imxy) && operand.IsM256(mxy) && operand.IsYmm(xy): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPERMILPD", + Operands: []operand.Op{imxy, mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil } - return &avo.Instruction{ - Opcode: "VPERMILPD", - Operands: []operand.Op{imxy, mxy, xy}, - }, nil + return nil, ErrBadOperandTypes } // VPERMILPS: Permute Single-Precision Floating-Point Values. @@ -17323,20 +26684,63 @@ func VPERMILPD(imxy, mxy, xy operand.Op) (*avo.Instruction, error) { func VPERMILPS(imxy, mxy, xy operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(imxy) && operand.IsXmm(mxy) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VPERMILPS", + Operands: []operand.Op{imxy, mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsXmm(imxy) && operand.IsXmm(mxy) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VPERMILPS", + Operands: []operand.Op{imxy, mxy, xy}, + Inputs: []operand.Op{imxy, mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM128(imxy) && operand.IsXmm(mxy) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VPERMILPS", + Operands: []operand.Op{imxy, mxy, xy}, + Inputs: []operand.Op{imxy, mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsImm8(imxy) && operand.IsM128(mxy) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VPERMILPS", + Operands: []operand.Op{imxy, mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsImm8(imxy) && operand.IsYmm(mxy) && operand.IsYmm(xy): + return &avo.Instruction{ + Opcode: "VPERMILPS", + Operands: []operand.Op{imxy, mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsYmm(imxy) && operand.IsYmm(mxy) && operand.IsYmm(xy): + return &avo.Instruction{ + Opcode: "VPERMILPS", + Operands: []operand.Op{imxy, mxy, xy}, + Inputs: []operand.Op{imxy, mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM256(imxy) && operand.IsYmm(mxy) && operand.IsYmm(xy): + return &avo.Instruction{ + Opcode: "VPERMILPS", + Operands: []operand.Op{imxy, mxy, xy}, + Inputs: []operand.Op{imxy, mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsImm8(imxy) && operand.IsM256(mxy) && operand.IsYmm(xy): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPERMILPS", + Operands: []operand.Op{imxy, mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil } - return &avo.Instruction{ - Opcode: "VPERMILPS", - Operands: []operand.Op{imxy, mxy, xy}, - }, nil + return nil, ErrBadOperandTypes } // VPERMPD: Permute Double-Precision Floating-Point Elements. @@ -17348,14 +26752,21 @@ func VPERMILPS(imxy, mxy, xy operand.Op) (*avo.Instruction, error) { func VPERMPD(i, my, y operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsYmm(my) && operand.IsYmm(y): + return &avo.Instruction{ + Opcode: "VPERMPD", + Operands: []operand.Op{i, my, y}, + Inputs: []operand.Op{my}, + Outputs: []operand.Op{y}, + }, nil case operand.IsImm8(i) && operand.IsM256(my) && operand.IsYmm(y): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPERMPD", + Operands: []operand.Op{i, my, y}, + Inputs: []operand.Op{my}, + Outputs: []operand.Op{y}, + }, nil } - return &avo.Instruction{ - Opcode: "VPERMPD", - Operands: []operand.Op{i, my, y}, - }, nil + return nil, ErrBadOperandTypes } // VPERMPS: Permute Single-Precision Floating-Point Elements. @@ -17367,14 +26778,21 @@ func VPERMPD(i, my, y operand.Op) (*avo.Instruction, error) { func VPERMPS(my, y, y1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsYmm(my) && operand.IsYmm(y) && operand.IsYmm(y1): + return &avo.Instruction{ + Opcode: "VPERMPS", + Operands: []operand.Op{my, y, y1}, + Inputs: []operand.Op{my, y}, + Outputs: []operand.Op{y1}, + }, nil case operand.IsM256(my) && operand.IsYmm(y) && operand.IsYmm(y1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPERMPS", + Operands: []operand.Op{my, y, y1}, + Inputs: []operand.Op{my, y}, + Outputs: []operand.Op{y1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPERMPS", - Operands: []operand.Op{my, y, y1}, - }, nil + return nil, ErrBadOperandTypes } // VPERMQ: Permute Quadword Integers. @@ -17386,14 +26804,21 @@ func VPERMPS(my, y, y1 operand.Op) (*avo.Instruction, error) { func VPERMQ(i, my, y operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsYmm(my) && operand.IsYmm(y): + return &avo.Instruction{ + Opcode: "VPERMQ", + Operands: []operand.Op{i, my, y}, + Inputs: []operand.Op{my}, + Outputs: []operand.Op{y}, + }, nil case operand.IsImm8(i) && operand.IsM256(my) && operand.IsYmm(y): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPERMQ", + Operands: []operand.Op{i, my, y}, + Inputs: []operand.Op{my}, + Outputs: []operand.Op{y}, + }, nil } - return &avo.Instruction{ - Opcode: "VPERMQ", - Operands: []operand.Op{i, my, y}, - }, nil + return nil, ErrBadOperandTypes } // VPEXTRB: Extract Byte. @@ -17405,14 +26830,21 @@ func VPERMQ(i, my, y operand.Op) (*avo.Instruction, error) { func VPEXTRB(i, x, mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(x) && operand.IsR32(mr): + return &avo.Instruction{ + Opcode: "VPEXTRB", + Operands: []operand.Op{i, x, mr}, + Inputs: []operand.Op{x}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(i) && operand.IsXmm(x) && operand.IsM8(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPEXTRB", + Operands: []operand.Op{i, x, mr}, + Inputs: []operand.Op{x}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "VPEXTRB", - Operands: []operand.Op{i, x, mr}, - }, nil + return nil, ErrBadOperandTypes } // VPEXTRD: Extract Doubleword. @@ -17424,14 +26856,21 @@ func VPEXTRB(i, x, mr operand.Op) (*avo.Instruction, error) { func VPEXTRD(i, x, mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(x) && operand.IsR32(mr): + return &avo.Instruction{ + Opcode: "VPEXTRD", + Operands: []operand.Op{i, x, mr}, + Inputs: []operand.Op{x}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(i) && operand.IsXmm(x) && operand.IsM32(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPEXTRD", + Operands: []operand.Op{i, x, mr}, + Inputs: []operand.Op{x}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "VPEXTRD", - Operands: []operand.Op{i, x, mr}, - }, nil + return nil, ErrBadOperandTypes } // VPEXTRQ: Extract Quadword. @@ -17443,14 +26882,21 @@ func VPEXTRD(i, x, mr operand.Op) (*avo.Instruction, error) { func VPEXTRQ(i, x, mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(x) && operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "VPEXTRQ", + Operands: []operand.Op{i, x, mr}, + Inputs: []operand.Op{x}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(i) && operand.IsXmm(x) && operand.IsM64(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPEXTRQ", + Operands: []operand.Op{i, x, mr}, + Inputs: []operand.Op{x}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "VPEXTRQ", - Operands: []operand.Op{i, x, mr}, - }, nil + return nil, ErrBadOperandTypes } // VPEXTRW: Extract Word. @@ -17462,14 +26908,21 @@ func VPEXTRQ(i, x, mr operand.Op) (*avo.Instruction, error) { func VPEXTRW(i, x, mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(x) && operand.IsR32(mr): + return &avo.Instruction{ + Opcode: "VPEXTRW", + Operands: []operand.Op{i, x, mr}, + Inputs: []operand.Op{x}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(i) && operand.IsXmm(x) && operand.IsM16(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPEXTRW", + Operands: []operand.Op{i, x, mr}, + Inputs: []operand.Op{x}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "VPEXTRW", - Operands: []operand.Op{i, x, mr}, - }, nil + return nil, ErrBadOperandTypes } // VPGATHERDD: Gather Packed Doubleword Values Using Signed Doubleword Indices. @@ -17481,14 +26934,21 @@ func VPEXTRW(i, x, mr operand.Op) (*avo.Instruction, error) { func VPGATHERDD(xy, v, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(xy) && operand.IsVm32x(v) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPGATHERDD", + Operands: []operand.Op{xy, v, xy1}, + Inputs: []operand.Op{xy, v, xy1}, + Outputs: []operand.Op{xy, xy1}, + }, nil case operand.IsYmm(xy) && operand.IsVm32y(v) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPGATHERDD", + Operands: []operand.Op{xy, v, xy1}, + Inputs: []operand.Op{xy, v, xy1}, + Outputs: []operand.Op{xy, xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPGATHERDD", - Operands: []operand.Op{xy, v, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPGATHERDQ: Gather Packed Quadword Values Using Signed Doubleword Indices. @@ -17500,14 +26960,21 @@ func VPGATHERDD(xy, v, xy1 operand.Op) (*avo.Instruction, error) { func VPGATHERDQ(xy, v, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(xy) && operand.IsVm32x(v) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPGATHERDQ", + Operands: []operand.Op{xy, v, xy1}, + Inputs: []operand.Op{xy, v, xy1}, + Outputs: []operand.Op{xy, xy1}, + }, nil case operand.IsYmm(xy) && operand.IsVm32x(v) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPGATHERDQ", + Operands: []operand.Op{xy, v, xy1}, + Inputs: []operand.Op{xy, v, xy1}, + Outputs: []operand.Op{xy, xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPGATHERDQ", - Operands: []operand.Op{xy, v, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPGATHERQD: Gather Packed Doubleword Values Using Signed Quadword Indices. @@ -17519,14 +26986,21 @@ func VPGATHERDQ(xy, v, xy1 operand.Op) (*avo.Instruction, error) { func VPGATHERQD(x, v, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(x) && operand.IsVm64x(v) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VPGATHERQD", + Operands: []operand.Op{x, v, x1}, + Inputs: []operand.Op{x, v, x1}, + Outputs: []operand.Op{x, x1}, + }, nil case operand.IsXmm(x) && operand.IsVm64y(v) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPGATHERQD", + Operands: []operand.Op{x, v, x1}, + Inputs: []operand.Op{x, v, x1}, + Outputs: []operand.Op{x, x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPGATHERQD", - Operands: []operand.Op{x, v, x1}, - }, nil + return nil, ErrBadOperandTypes } // VPGATHERQQ: Gather Packed Quadword Values Using Signed Quadword Indices. @@ -17538,14 +27012,21 @@ func VPGATHERQD(x, v, x1 operand.Op) (*avo.Instruction, error) { func VPGATHERQQ(xy, v, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(xy) && operand.IsVm64x(v) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPGATHERQQ", + Operands: []operand.Op{xy, v, xy1}, + Inputs: []operand.Op{xy, v, xy1}, + Outputs: []operand.Op{xy, xy1}, + }, nil case operand.IsYmm(xy) && operand.IsVm64y(v) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPGATHERQQ", + Operands: []operand.Op{xy, v, xy1}, + Inputs: []operand.Op{xy, v, xy1}, + Outputs: []operand.Op{xy, xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPGATHERQQ", - Operands: []operand.Op{xy, v, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPHADDD: Packed Horizontal Add Doubleword Integer. @@ -17559,16 +27040,35 @@ func VPGATHERQQ(xy, v, xy1 operand.Op) (*avo.Instruction, error) { func VPHADDD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPHADDD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPHADDD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPHADDD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPHADDD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPHADDD", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPHADDSW: Packed Horizontal Add Signed Word Integers with Signed Saturation. @@ -17582,16 +27082,35 @@ func VPHADDD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPHADDSW(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPHADDSW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPHADDSW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPHADDSW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPHADDSW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPHADDSW", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPHADDW: Packed Horizontal Add Word Integers. @@ -17605,16 +27124,35 @@ func VPHADDSW(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPHADDW(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPHADDW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPHADDW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPHADDW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPHADDW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPHADDW", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPHMINPOSUW: Packed Horizontal Minimum of Unsigned Word Integers. @@ -17626,14 +27164,21 @@ func VPHADDW(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPHMINPOSUW(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "VPHMINPOSUW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPHMINPOSUW", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "VPHMINPOSUW", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // VPHSUBD: Packed Horizontal Subtract Doubleword Integers. @@ -17647,16 +27192,35 @@ func VPHMINPOSUW(mx, x operand.Op) (*avo.Instruction, error) { func VPHSUBD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPHSUBD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPHSUBD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPHSUBD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPHSUBD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPHSUBD", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPHSUBSW: Packed Horizontal Subtract Signed Word Integers with Signed Saturation. @@ -17670,16 +27234,35 @@ func VPHSUBD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPHSUBSW(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPHSUBSW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPHSUBSW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPHSUBSW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPHSUBSW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPHSUBSW", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPHSUBW: Packed Horizontal Subtract Word Integers. @@ -17693,16 +27276,35 @@ func VPHSUBSW(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPHSUBW(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPHSUBW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPHSUBW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPHSUBW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPHSUBW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPHSUBW", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPINSRB: Insert Byte. @@ -17714,14 +27316,21 @@ func VPHSUBW(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPINSRB(i, mr, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsR32(mr) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VPINSRB", + Operands: []operand.Op{i, mr, x, x1}, + Inputs: []operand.Op{mr, x}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsImm8(i) && operand.IsM8(mr) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPINSRB", + Operands: []operand.Op{i, mr, x, x1}, + Inputs: []operand.Op{mr, x}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPINSRB", - Operands: []operand.Op{i, mr, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VPINSRD: Insert Doubleword. @@ -17733,14 +27342,21 @@ func VPINSRB(i, mr, x, x1 operand.Op) (*avo.Instruction, error) { func VPINSRD(i, mr, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsR32(mr) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VPINSRD", + Operands: []operand.Op{i, mr, x, x1}, + Inputs: []operand.Op{mr, x}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsImm8(i) && operand.IsM32(mr) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPINSRD", + Operands: []operand.Op{i, mr, x, x1}, + Inputs: []operand.Op{mr, x}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPINSRD", - Operands: []operand.Op{i, mr, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VPINSRQ: Insert Quadword. @@ -17752,14 +27368,21 @@ func VPINSRD(i, mr, x, x1 operand.Op) (*avo.Instruction, error) { func VPINSRQ(i, mr, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsR64(mr) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VPINSRQ", + Operands: []operand.Op{i, mr, x, x1}, + Inputs: []operand.Op{mr, x}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsImm8(i) && operand.IsM64(mr) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPINSRQ", + Operands: []operand.Op{i, mr, x, x1}, + Inputs: []operand.Op{mr, x}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPINSRQ", - Operands: []operand.Op{i, mr, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VPINSRW: Insert Word. @@ -17771,14 +27394,21 @@ func VPINSRQ(i, mr, x, x1 operand.Op) (*avo.Instruction, error) { func VPINSRW(i, mr, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsR32(mr) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VPINSRW", + Operands: []operand.Op{i, mr, x, x1}, + Inputs: []operand.Op{mr, x}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsImm8(i) && operand.IsM16(mr) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPINSRW", + Operands: []operand.Op{i, mr, x, x1}, + Inputs: []operand.Op{mr, x}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPINSRW", - Operands: []operand.Op{i, mr, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VPMADDUBSW: Multiply and Add Packed Signed and Unsigned Byte Integers. @@ -17792,16 +27422,35 @@ func VPINSRW(i, mr, x, x1 operand.Op) (*avo.Instruction, error) { func VPMADDUBSW(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPMADDUBSW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPMADDUBSW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPMADDUBSW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPMADDUBSW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPMADDUBSW", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPMADDWD: Multiply and Add Packed Signed Word Integers. @@ -17815,16 +27464,35 @@ func VPMADDUBSW(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPMADDWD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPMADDWD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPMADDWD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPMADDWD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPMADDWD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPMADDWD", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPMASKMOVD: Conditional Move Packed Doubleword Integers. @@ -17838,16 +27506,35 @@ func VPMADDWD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPMASKMOVD(mxy, xy, mxy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(mxy1): + return &avo.Instruction{ + Opcode: "VPMASKMOVD", + Operands: []operand.Op{mxy, xy, mxy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{mxy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(mxy1): + return &avo.Instruction{ + Opcode: "VPMASKMOVD", + Operands: []operand.Op{mxy, xy, mxy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{mxy1}, + }, nil case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsM128(mxy1): + return &avo.Instruction{ + Opcode: "VPMASKMOVD", + Operands: []operand.Op{mxy, xy, mxy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{mxy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsM256(mxy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPMASKMOVD", + Operands: []operand.Op{mxy, xy, mxy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{mxy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPMASKMOVD", - Operands: []operand.Op{mxy, xy, mxy1}, - }, nil + return nil, ErrBadOperandTypes } // VPMASKMOVQ: Conditional Move Packed Quadword Integers. @@ -17861,16 +27548,35 @@ func VPMASKMOVD(mxy, xy, mxy1 operand.Op) (*avo.Instruction, error) { func VPMASKMOVQ(mxy, xy, mxy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(mxy1): + return &avo.Instruction{ + Opcode: "VPMASKMOVQ", + Operands: []operand.Op{mxy, xy, mxy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{mxy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(mxy1): + return &avo.Instruction{ + Opcode: "VPMASKMOVQ", + Operands: []operand.Op{mxy, xy, mxy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{mxy1}, + }, nil case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsM128(mxy1): + return &avo.Instruction{ + Opcode: "VPMASKMOVQ", + Operands: []operand.Op{mxy, xy, mxy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{mxy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsM256(mxy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPMASKMOVQ", + Operands: []operand.Op{mxy, xy, mxy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{mxy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPMASKMOVQ", - Operands: []operand.Op{mxy, xy, mxy1}, - }, nil + return nil, ErrBadOperandTypes } // VPMAXSB: Maximum of Packed Signed Byte Integers. @@ -17884,16 +27590,35 @@ func VPMASKMOVQ(mxy, xy, mxy1 operand.Op) (*avo.Instruction, error) { func VPMAXSB(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPMAXSB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPMAXSB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPMAXSB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPMAXSB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPMAXSB", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPMAXSD: Maximum of Packed Signed Doubleword Integers. @@ -17907,16 +27632,35 @@ func VPMAXSB(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPMAXSD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPMAXSD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPMAXSD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPMAXSD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPMAXSD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPMAXSD", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPMAXSW: Maximum of Packed Signed Word Integers. @@ -17930,16 +27674,35 @@ func VPMAXSD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPMAXSW(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPMAXSW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPMAXSW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPMAXSW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPMAXSW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPMAXSW", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPMAXUB: Maximum of Packed Unsigned Byte Integers. @@ -17953,16 +27716,35 @@ func VPMAXSW(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPMAXUB(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPMAXUB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPMAXUB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPMAXUB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPMAXUB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPMAXUB", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPMAXUD: Maximum of Packed Unsigned Doubleword Integers. @@ -17976,16 +27758,35 @@ func VPMAXUB(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPMAXUD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPMAXUD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPMAXUD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPMAXUD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPMAXUD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPMAXUD", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPMAXUW: Maximum of Packed Unsigned Word Integers. @@ -17999,16 +27800,35 @@ func VPMAXUD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPMAXUW(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPMAXUW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPMAXUW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPMAXUW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPMAXUW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPMAXUW", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPMINSB: Minimum of Packed Signed Byte Integers. @@ -18022,16 +27842,35 @@ func VPMAXUW(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPMINSB(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPMINSB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPMINSB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPMINSB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPMINSB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPMINSB", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPMINSD: Minimum of Packed Signed Doubleword Integers. @@ -18045,16 +27884,35 @@ func VPMINSB(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPMINSD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPMINSD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPMINSD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPMINSD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPMINSD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPMINSD", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPMINSW: Minimum of Packed Signed Word Integers. @@ -18068,16 +27926,35 @@ func VPMINSD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPMINSW(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPMINSW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPMINSW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPMINSW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPMINSW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPMINSW", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPMINUB: Minimum of Packed Unsigned Byte Integers. @@ -18091,16 +27968,35 @@ func VPMINSW(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPMINUB(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPMINUB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPMINUB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPMINUB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPMINUB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPMINUB", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPMINUD: Minimum of Packed Unsigned Doubleword Integers. @@ -18114,16 +28010,35 @@ func VPMINUB(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPMINUD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPMINUD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPMINUD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPMINUD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPMINUD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPMINUD", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPMINUW: Minimum of Packed Unsigned Word Integers. @@ -18137,16 +28052,35 @@ func VPMINUD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPMINUW(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPMINUW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPMINUW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPMINUW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPMINUW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPMINUW", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPMOVMSKB: Move Byte Mask. @@ -18158,14 +28092,21 @@ func VPMINUW(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPMOVMSKB(xy, r operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(xy) && operand.IsR32(r): + return &avo.Instruction{ + Opcode: "VPMOVMSKB", + Operands: []operand.Op{xy, r}, + Inputs: []operand.Op{xy}, + Outputs: []operand.Op{r}, + }, nil case operand.IsYmm(xy) && operand.IsR32(r): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPMOVMSKB", + Operands: []operand.Op{xy, r}, + Inputs: []operand.Op{xy}, + Outputs: []operand.Op{r}, + }, nil } - return &avo.Instruction{ - Opcode: "VPMOVMSKB", - Operands: []operand.Op{xy, r}, - }, nil + return nil, ErrBadOperandTypes } // VPMOVSXBD: Move Packed Byte Integers to Doubleword Integers with Sign Extension. @@ -18179,16 +28120,35 @@ func VPMOVMSKB(xy, r operand.Op) (*avo.Instruction, error) { func VPMOVSXBD(mx, xy operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VPMOVSXBD", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM32(mx) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VPMOVSXBD", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsXmm(mx) && operand.IsYmm(xy): + return &avo.Instruction{ + Opcode: "VPMOVSXBD", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM64(mx) && operand.IsYmm(xy): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPMOVSXBD", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil } - return &avo.Instruction{ - Opcode: "VPMOVSXBD", - Operands: []operand.Op{mx, xy}, - }, nil + return nil, ErrBadOperandTypes } // VPMOVSXBQ: Move Packed Byte Integers to Quadword Integers with Sign Extension. @@ -18202,16 +28162,35 @@ func VPMOVSXBD(mx, xy operand.Op) (*avo.Instruction, error) { func VPMOVSXBQ(mx, xy operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VPMOVSXBQ", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM16(mx) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VPMOVSXBQ", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsXmm(mx) && operand.IsYmm(xy): + return &avo.Instruction{ + Opcode: "VPMOVSXBQ", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM32(mx) && operand.IsYmm(xy): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPMOVSXBQ", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil } - return &avo.Instruction{ - Opcode: "VPMOVSXBQ", - Operands: []operand.Op{mx, xy}, - }, nil + return nil, ErrBadOperandTypes } // VPMOVSXBW: Move Packed Byte Integers to Word Integers with Sign Extension. @@ -18225,16 +28204,35 @@ func VPMOVSXBQ(mx, xy operand.Op) (*avo.Instruction, error) { func VPMOVSXBW(mx, xy operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VPMOVSXBW", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM64(mx) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VPMOVSXBW", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsXmm(mx) && operand.IsYmm(xy): + return &avo.Instruction{ + Opcode: "VPMOVSXBW", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM128(mx) && operand.IsYmm(xy): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPMOVSXBW", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil } - return &avo.Instruction{ - Opcode: "VPMOVSXBW", - Operands: []operand.Op{mx, xy}, - }, nil + return nil, ErrBadOperandTypes } // VPMOVSXDQ: Move Packed Doubleword Integers to Quadword Integers with Sign Extension. @@ -18248,16 +28246,35 @@ func VPMOVSXBW(mx, xy operand.Op) (*avo.Instruction, error) { func VPMOVSXDQ(mx, xy operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VPMOVSXDQ", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM64(mx) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VPMOVSXDQ", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsXmm(mx) && operand.IsYmm(xy): + return &avo.Instruction{ + Opcode: "VPMOVSXDQ", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM128(mx) && operand.IsYmm(xy): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPMOVSXDQ", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil } - return &avo.Instruction{ - Opcode: "VPMOVSXDQ", - Operands: []operand.Op{mx, xy}, - }, nil + return nil, ErrBadOperandTypes } // VPMOVSXWD: Move Packed Word Integers to Doubleword Integers with Sign Extension. @@ -18271,16 +28288,35 @@ func VPMOVSXDQ(mx, xy operand.Op) (*avo.Instruction, error) { func VPMOVSXWD(mx, xy operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VPMOVSXWD", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM64(mx) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VPMOVSXWD", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsXmm(mx) && operand.IsYmm(xy): + return &avo.Instruction{ + Opcode: "VPMOVSXWD", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM128(mx) && operand.IsYmm(xy): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPMOVSXWD", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil } - return &avo.Instruction{ - Opcode: "VPMOVSXWD", - Operands: []operand.Op{mx, xy}, - }, nil + return nil, ErrBadOperandTypes } // VPMOVSXWQ: Move Packed Word Integers to Quadword Integers with Sign Extension. @@ -18294,16 +28330,35 @@ func VPMOVSXWD(mx, xy operand.Op) (*avo.Instruction, error) { func VPMOVSXWQ(mx, xy operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VPMOVSXWQ", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM32(mx) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VPMOVSXWQ", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsXmm(mx) && operand.IsYmm(xy): + return &avo.Instruction{ + Opcode: "VPMOVSXWQ", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM64(mx) && operand.IsYmm(xy): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPMOVSXWQ", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil } - return &avo.Instruction{ - Opcode: "VPMOVSXWQ", - Operands: []operand.Op{mx, xy}, - }, nil + return nil, ErrBadOperandTypes } // VPMOVZXBD: Move Packed Byte Integers to Doubleword Integers with Zero Extension. @@ -18317,16 +28372,35 @@ func VPMOVSXWQ(mx, xy operand.Op) (*avo.Instruction, error) { func VPMOVZXBD(mx, xy operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VPMOVZXBD", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM32(mx) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VPMOVZXBD", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsXmm(mx) && operand.IsYmm(xy): + return &avo.Instruction{ + Opcode: "VPMOVZXBD", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM64(mx) && operand.IsYmm(xy): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPMOVZXBD", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil } - return &avo.Instruction{ - Opcode: "VPMOVZXBD", - Operands: []operand.Op{mx, xy}, - }, nil + return nil, ErrBadOperandTypes } // VPMOVZXBQ: Move Packed Byte Integers to Quadword Integers with Zero Extension. @@ -18340,16 +28414,35 @@ func VPMOVZXBD(mx, xy operand.Op) (*avo.Instruction, error) { func VPMOVZXBQ(mx, xy operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VPMOVZXBQ", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM16(mx) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VPMOVZXBQ", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsXmm(mx) && operand.IsYmm(xy): + return &avo.Instruction{ + Opcode: "VPMOVZXBQ", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM32(mx) && operand.IsYmm(xy): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPMOVZXBQ", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil } - return &avo.Instruction{ - Opcode: "VPMOVZXBQ", - Operands: []operand.Op{mx, xy}, - }, nil + return nil, ErrBadOperandTypes } // VPMOVZXBW: Move Packed Byte Integers to Word Integers with Zero Extension. @@ -18363,16 +28456,35 @@ func VPMOVZXBQ(mx, xy operand.Op) (*avo.Instruction, error) { func VPMOVZXBW(mx, xy operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VPMOVZXBW", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM64(mx) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VPMOVZXBW", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsXmm(mx) && operand.IsYmm(xy): + return &avo.Instruction{ + Opcode: "VPMOVZXBW", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM128(mx) && operand.IsYmm(xy): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPMOVZXBW", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil } - return &avo.Instruction{ - Opcode: "VPMOVZXBW", - Operands: []operand.Op{mx, xy}, - }, nil + return nil, ErrBadOperandTypes } // VPMOVZXDQ: Move Packed Doubleword Integers to Quadword Integers with Zero Extension. @@ -18386,16 +28498,35 @@ func VPMOVZXBW(mx, xy operand.Op) (*avo.Instruction, error) { func VPMOVZXDQ(mx, xy operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VPMOVZXDQ", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM64(mx) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VPMOVZXDQ", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsXmm(mx) && operand.IsYmm(xy): + return &avo.Instruction{ + Opcode: "VPMOVZXDQ", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM128(mx) && operand.IsYmm(xy): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPMOVZXDQ", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil } - return &avo.Instruction{ - Opcode: "VPMOVZXDQ", - Operands: []operand.Op{mx, xy}, - }, nil + return nil, ErrBadOperandTypes } // VPMOVZXWD: Move Packed Word Integers to Doubleword Integers with Zero Extension. @@ -18409,16 +28540,35 @@ func VPMOVZXDQ(mx, xy operand.Op) (*avo.Instruction, error) { func VPMOVZXWD(mx, xy operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VPMOVZXWD", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM64(mx) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VPMOVZXWD", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsXmm(mx) && operand.IsYmm(xy): + return &avo.Instruction{ + Opcode: "VPMOVZXWD", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM128(mx) && operand.IsYmm(xy): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPMOVZXWD", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil } - return &avo.Instruction{ - Opcode: "VPMOVZXWD", - Operands: []operand.Op{mx, xy}, - }, nil + return nil, ErrBadOperandTypes } // VPMOVZXWQ: Move Packed Word Integers to Quadword Integers with Zero Extension. @@ -18432,16 +28582,35 @@ func VPMOVZXWD(mx, xy operand.Op) (*avo.Instruction, error) { func VPMOVZXWQ(mx, xy operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VPMOVZXWQ", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM32(mx) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VPMOVZXWQ", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsXmm(mx) && operand.IsYmm(xy): + return &avo.Instruction{ + Opcode: "VPMOVZXWQ", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM64(mx) && operand.IsYmm(xy): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPMOVZXWQ", + Operands: []operand.Op{mx, xy}, + Inputs: []operand.Op{mx}, + Outputs: []operand.Op{xy}, + }, nil } - return &avo.Instruction{ - Opcode: "VPMOVZXWQ", - Operands: []operand.Op{mx, xy}, - }, nil + return nil, ErrBadOperandTypes } // VPMULDQ: Multiply Packed Signed Doubleword Integers and Store Quadword Result. @@ -18455,16 +28624,35 @@ func VPMOVZXWQ(mx, xy operand.Op) (*avo.Instruction, error) { func VPMULDQ(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPMULDQ", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPMULDQ", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPMULDQ", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPMULDQ", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPMULDQ", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPMULHRSW: Packed Multiply Signed Word Integers and Store High Result with Round and Scale. @@ -18478,16 +28666,35 @@ func VPMULDQ(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPMULHRSW(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPMULHRSW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPMULHRSW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPMULHRSW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPMULHRSW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPMULHRSW", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPMULHUW: Multiply Packed Unsigned Word Integers and Store High Result. @@ -18501,16 +28708,35 @@ func VPMULHRSW(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPMULHUW(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPMULHUW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPMULHUW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPMULHUW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPMULHUW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPMULHUW", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPMULHW: Multiply Packed Signed Word Integers and Store High Result. @@ -18524,16 +28750,35 @@ func VPMULHUW(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPMULHW(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPMULHW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPMULHW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPMULHW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPMULHW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPMULHW", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPMULLD: Multiply Packed Signed Doubleword Integers and Store Low Result. @@ -18547,16 +28792,35 @@ func VPMULHW(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPMULLD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPMULLD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPMULLD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPMULLD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPMULLD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPMULLD", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPMULLW: Multiply Packed Signed Word Integers and Store Low Result. @@ -18570,16 +28834,35 @@ func VPMULLD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPMULLW(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPMULLW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPMULLW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPMULLW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPMULLW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPMULLW", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPMULUDQ: Multiply Packed Unsigned Doubleword Integers. @@ -18593,16 +28876,35 @@ func VPMULLW(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPMULUDQ(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPMULUDQ", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPMULUDQ", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPMULUDQ", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPMULUDQ", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPMULUDQ", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPOR: Packed Bitwise Logical OR. @@ -18616,16 +28918,35 @@ func VPMULUDQ(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPOR(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPOR", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPOR", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPOR", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPOR", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPOR", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPSADBW: Compute Sum of Absolute Differences. @@ -18639,16 +28960,35 @@ func VPOR(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPSADBW(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSADBW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSADBW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPSADBW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPSADBW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPSADBW", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPSHUFB: Packed Shuffle Bytes. @@ -18662,16 +29002,35 @@ func VPSADBW(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPSHUFB(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSHUFB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSHUFB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPSHUFB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPSHUFB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPSHUFB", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPSHUFD: Shuffle Packed Doublewords. @@ -18685,16 +29044,35 @@ func VPSHUFB(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPSHUFD(i, mxy, xy operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(mxy) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VPSHUFD", + Operands: []operand.Op{i, mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsImm8(i) && operand.IsM128(mxy) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VPSHUFD", + Operands: []operand.Op{i, mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsImm8(i) && operand.IsYmm(mxy) && operand.IsYmm(xy): + return &avo.Instruction{ + Opcode: "VPSHUFD", + Operands: []operand.Op{i, mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsImm8(i) && operand.IsM256(mxy) && operand.IsYmm(xy): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPSHUFD", + Operands: []operand.Op{i, mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil } - return &avo.Instruction{ - Opcode: "VPSHUFD", - Operands: []operand.Op{i, mxy, xy}, - }, nil + return nil, ErrBadOperandTypes } // VPSHUFHW: Shuffle Packed High Words. @@ -18708,16 +29086,35 @@ func VPSHUFD(i, mxy, xy operand.Op) (*avo.Instruction, error) { func VPSHUFHW(i, mxy, xy operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(mxy) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VPSHUFHW", + Operands: []operand.Op{i, mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsImm8(i) && operand.IsM128(mxy) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VPSHUFHW", + Operands: []operand.Op{i, mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsImm8(i) && operand.IsYmm(mxy) && operand.IsYmm(xy): + return &avo.Instruction{ + Opcode: "VPSHUFHW", + Operands: []operand.Op{i, mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsImm8(i) && operand.IsM256(mxy) && operand.IsYmm(xy): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPSHUFHW", + Operands: []operand.Op{i, mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil } - return &avo.Instruction{ - Opcode: "VPSHUFHW", - Operands: []operand.Op{i, mxy, xy}, - }, nil + return nil, ErrBadOperandTypes } // VPSHUFLW: Shuffle Packed Low Words. @@ -18731,16 +29128,35 @@ func VPSHUFHW(i, mxy, xy operand.Op) (*avo.Instruction, error) { func VPSHUFLW(i, mxy, xy operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(mxy) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VPSHUFLW", + Operands: []operand.Op{i, mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsImm8(i) && operand.IsM128(mxy) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VPSHUFLW", + Operands: []operand.Op{i, mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsImm8(i) && operand.IsYmm(mxy) && operand.IsYmm(xy): + return &avo.Instruction{ + Opcode: "VPSHUFLW", + Operands: []operand.Op{i, mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsImm8(i) && operand.IsM256(mxy) && operand.IsYmm(xy): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPSHUFLW", + Operands: []operand.Op{i, mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil } - return &avo.Instruction{ - Opcode: "VPSHUFLW", - Operands: []operand.Op{i, mxy, xy}, - }, nil + return nil, ErrBadOperandTypes } // VPSIGNB: Packed Sign of Byte Integers. @@ -18754,16 +29170,35 @@ func VPSHUFLW(i, mxy, xy operand.Op) (*avo.Instruction, error) { func VPSIGNB(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSIGNB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSIGNB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPSIGNB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPSIGNB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPSIGNB", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPSIGND: Packed Sign of Doubleword Integers. @@ -18777,16 +29212,35 @@ func VPSIGNB(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPSIGND(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSIGND", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSIGND", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPSIGND", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPSIGND", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPSIGND", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPSIGNW: Packed Sign of Word Integers. @@ -18800,16 +29254,35 @@ func VPSIGND(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPSIGNW(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSIGNW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSIGNW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPSIGNW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPSIGNW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPSIGNW", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPSLLD: Shift Packed Doubleword Data Left Logical. @@ -18825,18 +29298,49 @@ func VPSIGNW(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPSLLD(imx, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(imx) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSLLD", + Operands: []operand.Op{imx, xy, xy1}, + Inputs: []operand.Op{xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsXmm(imx) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSLLD", + Operands: []operand.Op{imx, xy, xy1}, + Inputs: []operand.Op{imx, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(imx) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSLLD", + Operands: []operand.Op{imx, xy, xy1}, + Inputs: []operand.Op{imx, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsImm8(imx) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPSLLD", + Operands: []operand.Op{imx, xy, xy1}, + Inputs: []operand.Op{xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsXmm(imx) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPSLLD", + Operands: []operand.Op{imx, xy, xy1}, + Inputs: []operand.Op{imx, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(imx) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPSLLD", + Operands: []operand.Op{imx, xy, xy1}, + Inputs: []operand.Op{imx, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPSLLD", - Operands: []operand.Op{imx, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPSLLDQ: Shift Packed Double Quadword Left Logical. @@ -18848,14 +29352,21 @@ func VPSLLD(imx, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPSLLDQ(i, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSLLDQ", + Operands: []operand.Op{i, xy, xy1}, + Inputs: []operand.Op{xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsImm8(i) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPSLLDQ", + Operands: []operand.Op{i, xy, xy1}, + Inputs: []operand.Op{xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPSLLDQ", - Operands: []operand.Op{i, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPSLLQ: Shift Packed Quadword Data Left Logical. @@ -18871,18 +29382,49 @@ func VPSLLDQ(i, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPSLLQ(imx, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(imx) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSLLQ", + Operands: []operand.Op{imx, xy, xy1}, + Inputs: []operand.Op{xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsXmm(imx) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSLLQ", + Operands: []operand.Op{imx, xy, xy1}, + Inputs: []operand.Op{imx, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(imx) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSLLQ", + Operands: []operand.Op{imx, xy, xy1}, + Inputs: []operand.Op{imx, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsImm8(imx) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPSLLQ", + Operands: []operand.Op{imx, xy, xy1}, + Inputs: []operand.Op{xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsXmm(imx) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPSLLQ", + Operands: []operand.Op{imx, xy, xy1}, + Inputs: []operand.Op{imx, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(imx) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPSLLQ", + Operands: []operand.Op{imx, xy, xy1}, + Inputs: []operand.Op{imx, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPSLLQ", - Operands: []operand.Op{imx, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPSLLVD: Variable Shift Packed Doubleword Data Left Logical. @@ -18896,16 +29438,35 @@ func VPSLLQ(imx, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPSLLVD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSLLVD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSLLVD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPSLLVD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPSLLVD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPSLLVD", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPSLLVQ: Variable Shift Packed Quadword Data Left Logical. @@ -18919,16 +29480,35 @@ func VPSLLVD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPSLLVQ(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSLLVQ", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSLLVQ", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPSLLVQ", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPSLLVQ", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPSLLVQ", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPSLLW: Shift Packed Word Data Left Logical. @@ -18944,18 +29524,49 @@ func VPSLLVQ(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPSLLW(imx, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(imx) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSLLW", + Operands: []operand.Op{imx, xy, xy1}, + Inputs: []operand.Op{xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsXmm(imx) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSLLW", + Operands: []operand.Op{imx, xy, xy1}, + Inputs: []operand.Op{imx, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(imx) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSLLW", + Operands: []operand.Op{imx, xy, xy1}, + Inputs: []operand.Op{imx, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsImm8(imx) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPSLLW", + Operands: []operand.Op{imx, xy, xy1}, + Inputs: []operand.Op{xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsXmm(imx) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPSLLW", + Operands: []operand.Op{imx, xy, xy1}, + Inputs: []operand.Op{imx, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(imx) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPSLLW", + Operands: []operand.Op{imx, xy, xy1}, + Inputs: []operand.Op{imx, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPSLLW", - Operands: []operand.Op{imx, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPSRAD: Shift Packed Doubleword Data Right Arithmetic. @@ -18971,18 +29582,49 @@ func VPSLLW(imx, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPSRAD(imx, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(imx) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSRAD", + Operands: []operand.Op{imx, xy, xy1}, + Inputs: []operand.Op{xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsXmm(imx) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSRAD", + Operands: []operand.Op{imx, xy, xy1}, + Inputs: []operand.Op{imx, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(imx) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSRAD", + Operands: []operand.Op{imx, xy, xy1}, + Inputs: []operand.Op{imx, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsImm8(imx) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPSRAD", + Operands: []operand.Op{imx, xy, xy1}, + Inputs: []operand.Op{xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsXmm(imx) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPSRAD", + Operands: []operand.Op{imx, xy, xy1}, + Inputs: []operand.Op{imx, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(imx) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPSRAD", + Operands: []operand.Op{imx, xy, xy1}, + Inputs: []operand.Op{imx, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPSRAD", - Operands: []operand.Op{imx, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPSRAVD: Variable Shift Packed Doubleword Data Right Arithmetic. @@ -18996,16 +29638,35 @@ func VPSRAD(imx, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPSRAVD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSRAVD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSRAVD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPSRAVD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPSRAVD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPSRAVD", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPSRAW: Shift Packed Word Data Right Arithmetic. @@ -19021,18 +29682,49 @@ func VPSRAVD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPSRAW(imx, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(imx) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSRAW", + Operands: []operand.Op{imx, xy, xy1}, + Inputs: []operand.Op{xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsXmm(imx) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSRAW", + Operands: []operand.Op{imx, xy, xy1}, + Inputs: []operand.Op{imx, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(imx) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSRAW", + Operands: []operand.Op{imx, xy, xy1}, + Inputs: []operand.Op{imx, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsImm8(imx) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPSRAW", + Operands: []operand.Op{imx, xy, xy1}, + Inputs: []operand.Op{xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsXmm(imx) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPSRAW", + Operands: []operand.Op{imx, xy, xy1}, + Inputs: []operand.Op{imx, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(imx) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPSRAW", + Operands: []operand.Op{imx, xy, xy1}, + Inputs: []operand.Op{imx, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPSRAW", - Operands: []operand.Op{imx, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPSRLD: Shift Packed Doubleword Data Right Logical. @@ -19048,18 +29740,49 @@ func VPSRAW(imx, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPSRLD(imx, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(imx) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSRLD", + Operands: []operand.Op{imx, xy, xy1}, + Inputs: []operand.Op{xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsXmm(imx) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSRLD", + Operands: []operand.Op{imx, xy, xy1}, + Inputs: []operand.Op{imx, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(imx) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSRLD", + Operands: []operand.Op{imx, xy, xy1}, + Inputs: []operand.Op{imx, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsImm8(imx) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPSRLD", + Operands: []operand.Op{imx, xy, xy1}, + Inputs: []operand.Op{xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsXmm(imx) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPSRLD", + Operands: []operand.Op{imx, xy, xy1}, + Inputs: []operand.Op{imx, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(imx) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPSRLD", + Operands: []operand.Op{imx, xy, xy1}, + Inputs: []operand.Op{imx, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPSRLD", - Operands: []operand.Op{imx, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPSRLDQ: Shift Packed Double Quadword Right Logical. @@ -19071,14 +29794,21 @@ func VPSRLD(imx, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPSRLDQ(i, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSRLDQ", + Operands: []operand.Op{i, xy, xy1}, + Inputs: []operand.Op{xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsImm8(i) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPSRLDQ", + Operands: []operand.Op{i, xy, xy1}, + Inputs: []operand.Op{xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPSRLDQ", - Operands: []operand.Op{i, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPSRLQ: Shift Packed Quadword Data Right Logical. @@ -19094,18 +29824,49 @@ func VPSRLDQ(i, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPSRLQ(imx, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(imx) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSRLQ", + Operands: []operand.Op{imx, xy, xy1}, + Inputs: []operand.Op{xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsXmm(imx) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSRLQ", + Operands: []operand.Op{imx, xy, xy1}, + Inputs: []operand.Op{imx, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(imx) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSRLQ", + Operands: []operand.Op{imx, xy, xy1}, + Inputs: []operand.Op{imx, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsImm8(imx) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPSRLQ", + Operands: []operand.Op{imx, xy, xy1}, + Inputs: []operand.Op{xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsXmm(imx) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPSRLQ", + Operands: []operand.Op{imx, xy, xy1}, + Inputs: []operand.Op{imx, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(imx) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPSRLQ", + Operands: []operand.Op{imx, xy, xy1}, + Inputs: []operand.Op{imx, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPSRLQ", - Operands: []operand.Op{imx, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPSRLVD: Variable Shift Packed Doubleword Data Right Logical. @@ -19119,16 +29880,35 @@ func VPSRLQ(imx, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPSRLVD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSRLVD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSRLVD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPSRLVD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPSRLVD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPSRLVD", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPSRLVQ: Variable Shift Packed Quadword Data Right Logical. @@ -19142,16 +29922,35 @@ func VPSRLVD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPSRLVQ(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSRLVQ", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSRLVQ", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPSRLVQ", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPSRLVQ", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPSRLVQ", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPSRLW: Shift Packed Word Data Right Logical. @@ -19167,18 +29966,49 @@ func VPSRLVQ(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPSRLW(imx, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(imx) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSRLW", + Operands: []operand.Op{imx, xy, xy1}, + Inputs: []operand.Op{xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsXmm(imx) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSRLW", + Operands: []operand.Op{imx, xy, xy1}, + Inputs: []operand.Op{imx, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(imx) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSRLW", + Operands: []operand.Op{imx, xy, xy1}, + Inputs: []operand.Op{imx, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsImm8(imx) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPSRLW", + Operands: []operand.Op{imx, xy, xy1}, + Inputs: []operand.Op{xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsXmm(imx) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPSRLW", + Operands: []operand.Op{imx, xy, xy1}, + Inputs: []operand.Op{imx, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(imx) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPSRLW", + Operands: []operand.Op{imx, xy, xy1}, + Inputs: []operand.Op{imx, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPSRLW", - Operands: []operand.Op{imx, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPSUBB: Subtract Packed Byte Integers. @@ -19192,16 +30022,35 @@ func VPSRLW(imx, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPSUBB(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSUBB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSUBB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPSUBB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPSUBB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPSUBB", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPSUBD: Subtract Packed Doubleword Integers. @@ -19215,16 +30064,35 @@ func VPSUBB(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPSUBD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSUBD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSUBD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPSUBD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPSUBD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPSUBD", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPSUBQ: Subtract Packed Quadword Integers. @@ -19238,16 +30106,35 @@ func VPSUBD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPSUBQ(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSUBQ", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSUBQ", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPSUBQ", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPSUBQ", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPSUBQ", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPSUBSB: Subtract Packed Signed Byte Integers with Signed Saturation. @@ -19261,16 +30148,35 @@ func VPSUBQ(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPSUBSB(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSUBSB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSUBSB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPSUBSB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPSUBSB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPSUBSB", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPSUBSW: Subtract Packed Signed Word Integers with Signed Saturation. @@ -19284,16 +30190,35 @@ func VPSUBSB(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPSUBSW(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSUBSW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSUBSW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPSUBSW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPSUBSW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPSUBSW", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPSUBUSB: Subtract Packed Unsigned Byte Integers with Unsigned Saturation. @@ -19307,16 +30232,35 @@ func VPSUBSW(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPSUBUSB(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSUBUSB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSUBUSB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPSUBUSB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPSUBUSB", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPSUBUSB", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPSUBUSW: Subtract Packed Unsigned Word Integers with Unsigned Saturation. @@ -19330,16 +30274,35 @@ func VPSUBUSB(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPSUBUSW(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSUBUSW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSUBUSW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPSUBUSW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPSUBUSW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPSUBUSW", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPSUBW: Subtract Packed Word Integers. @@ -19353,16 +30316,35 @@ func VPSUBUSW(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPSUBW(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSUBW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPSUBW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPSUBW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPSUBW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPSUBW", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPTEST: Packed Logical Compare. @@ -19376,16 +30358,35 @@ func VPSUBW(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPTEST(mxy, xy operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VPTEST", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VPTEST", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy): + return &avo.Instruction{ + Opcode: "VPTEST", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPTEST", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "VPTEST", - Operands: []operand.Op{mxy, xy}, - }, nil + return nil, ErrBadOperandTypes } // VPUNPCKHBW: Unpack and Interleave High-Order Bytes into Words. @@ -19399,16 +30400,35 @@ func VPTEST(mxy, xy operand.Op) (*avo.Instruction, error) { func VPUNPCKHBW(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPUNPCKHBW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPUNPCKHBW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPUNPCKHBW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPUNPCKHBW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPUNPCKHBW", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPUNPCKHDQ: Unpack and Interleave High-Order Doublewords into Quadwords. @@ -19422,16 +30442,35 @@ func VPUNPCKHBW(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPUNPCKHDQ(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPUNPCKHDQ", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPUNPCKHDQ", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPUNPCKHDQ", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPUNPCKHDQ", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPUNPCKHDQ", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPUNPCKHQDQ: Unpack and Interleave High-Order Quadwords into Double Quadwords. @@ -19445,16 +30484,35 @@ func VPUNPCKHDQ(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPUNPCKHQDQ(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPUNPCKHQDQ", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPUNPCKHQDQ", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPUNPCKHQDQ", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPUNPCKHQDQ", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPUNPCKHQDQ", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPUNPCKHWD: Unpack and Interleave High-Order Words into Doublewords. @@ -19468,16 +30526,35 @@ func VPUNPCKHQDQ(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPUNPCKHWD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPUNPCKHWD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPUNPCKHWD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPUNPCKHWD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPUNPCKHWD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPUNPCKHWD", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPUNPCKLBW: Unpack and Interleave Low-Order Bytes into Words. @@ -19491,16 +30568,35 @@ func VPUNPCKHWD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPUNPCKLBW(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPUNPCKLBW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPUNPCKLBW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPUNPCKLBW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPUNPCKLBW", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPUNPCKLBW", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPUNPCKLDQ: Unpack and Interleave Low-Order Doublewords into Quadwords. @@ -19514,16 +30610,35 @@ func VPUNPCKLBW(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPUNPCKLDQ(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPUNPCKLDQ", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPUNPCKLDQ", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPUNPCKLDQ", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPUNPCKLDQ", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPUNPCKLDQ", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPUNPCKLQDQ: Unpack and Interleave Low-Order Quadwords into Double Quadwords. @@ -19537,16 +30652,35 @@ func VPUNPCKLDQ(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPUNPCKLQDQ(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPUNPCKLQDQ", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPUNPCKLQDQ", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPUNPCKLQDQ", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPUNPCKLQDQ", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPUNPCKLQDQ", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPUNPCKLWD: Unpack and Interleave Low-Order Words into Doublewords. @@ -19560,16 +30694,35 @@ func VPUNPCKLQDQ(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPUNPCKLWD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPUNPCKLWD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPUNPCKLWD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPUNPCKLWD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPUNPCKLWD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPUNPCKLWD", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VPXOR: Packed Bitwise Logical Exclusive OR. @@ -19583,16 +30736,35 @@ func VPUNPCKLWD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VPXOR(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPXOR", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VPXOR", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VPXOR", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VPXOR", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VPXOR", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VRCPPS: Compute Approximate Reciprocals of Packed Single-Precision Floating-Point Values. @@ -19606,16 +30778,35 @@ func VPXOR(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VRCPPS(mxy, xy operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VRCPPS", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VRCPPS", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy): + return &avo.Instruction{ + Opcode: "VRCPPS", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VRCPPS", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil } - return &avo.Instruction{ - Opcode: "VRCPPS", - Operands: []operand.Op{mxy, xy}, - }, nil + return nil, ErrBadOperandTypes } // VRCPSS: Compute Approximate Reciprocal of Scalar Single-Precision Floating-Point Values. @@ -19627,14 +30818,21 @@ func VRCPPS(mxy, xy operand.Op) (*avo.Instruction, error) { func VRCPSS(mx, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VRCPSS", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsM32(mx) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VRCPSS", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VRCPSS", - Operands: []operand.Op{mx, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VROUNDPD: Round Packed Double Precision Floating-Point Values. @@ -19648,16 +30846,35 @@ func VRCPSS(mx, x, x1 operand.Op) (*avo.Instruction, error) { func VROUNDPD(i, mxy, xy operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(mxy) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VROUNDPD", + Operands: []operand.Op{i, mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsImm8(i) && operand.IsM128(mxy) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VROUNDPD", + Operands: []operand.Op{i, mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsImm8(i) && operand.IsYmm(mxy) && operand.IsYmm(xy): + return &avo.Instruction{ + Opcode: "VROUNDPD", + Operands: []operand.Op{i, mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsImm8(i) && operand.IsM256(mxy) && operand.IsYmm(xy): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VROUNDPD", + Operands: []operand.Op{i, mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil } - return &avo.Instruction{ - Opcode: "VROUNDPD", - Operands: []operand.Op{i, mxy, xy}, - }, nil + return nil, ErrBadOperandTypes } // VROUNDPS: Round Packed Single Precision Floating-Point Values. @@ -19671,16 +30888,35 @@ func VROUNDPD(i, mxy, xy operand.Op) (*avo.Instruction, error) { func VROUNDPS(i, mxy, xy operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(mxy) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VROUNDPS", + Operands: []operand.Op{i, mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsImm8(i) && operand.IsM128(mxy) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VROUNDPS", + Operands: []operand.Op{i, mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsImm8(i) && operand.IsYmm(mxy) && operand.IsYmm(xy): + return &avo.Instruction{ + Opcode: "VROUNDPS", + Operands: []operand.Op{i, mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsImm8(i) && operand.IsM256(mxy) && operand.IsYmm(xy): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VROUNDPS", + Operands: []operand.Op{i, mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil } - return &avo.Instruction{ - Opcode: "VROUNDPS", - Operands: []operand.Op{i, mxy, xy}, - }, nil + return nil, ErrBadOperandTypes } // VROUNDSD: Round Scalar Double Precision Floating-Point Values. @@ -19692,14 +30928,21 @@ func VROUNDPS(i, mxy, xy operand.Op) (*avo.Instruction, error) { func VROUNDSD(i, mx, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(mx) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VROUNDSD", + Operands: []operand.Op{i, mx, x, x1}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsImm8(i) && operand.IsM64(mx) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VROUNDSD", + Operands: []operand.Op{i, mx, x, x1}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VROUNDSD", - Operands: []operand.Op{i, mx, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VROUNDSS: Round Scalar Single Precision Floating-Point Values. @@ -19711,14 +30954,21 @@ func VROUNDSD(i, mx, x, x1 operand.Op) (*avo.Instruction, error) { func VROUNDSS(i, mx, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(mx) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VROUNDSS", + Operands: []operand.Op{i, mx, x, x1}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsImm8(i) && operand.IsM32(mx) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VROUNDSS", + Operands: []operand.Op{i, mx, x, x1}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VROUNDSS", - Operands: []operand.Op{i, mx, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VRSQRTPS: Compute Reciprocals of Square Roots of Packed Single-Precision Floating-Point Values. @@ -19732,16 +30982,35 @@ func VROUNDSS(i, mx, x, x1 operand.Op) (*avo.Instruction, error) { func VRSQRTPS(mxy, xy operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VRSQRTPS", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VRSQRTPS", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy): + return &avo.Instruction{ + Opcode: "VRSQRTPS", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VRSQRTPS", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil } - return &avo.Instruction{ - Opcode: "VRSQRTPS", - Operands: []operand.Op{mxy, xy}, - }, nil + return nil, ErrBadOperandTypes } // VRSQRTSS: Compute Reciprocal of Square Root of Scalar Single-Precision Floating-Point Value. @@ -19753,14 +31022,21 @@ func VRSQRTPS(mxy, xy operand.Op) (*avo.Instruction, error) { func VRSQRTSS(mx, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VRSQRTSS", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsM32(mx) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VRSQRTSS", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VRSQRTSS", - Operands: []operand.Op{mx, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VSHUFPD: Shuffle Packed Double-Precision Floating-Point Values. @@ -19774,16 +31050,35 @@ func VRSQRTSS(mx, x, x1 operand.Op) (*avo.Instruction, error) { func VSHUFPD(i, mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VSHUFPD", + Operands: []operand.Op{i, mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsImm8(i) && operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VSHUFPD", + Operands: []operand.Op{i, mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsImm8(i) && operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VSHUFPD", + Operands: []operand.Op{i, mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsImm8(i) && operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VSHUFPD", + Operands: []operand.Op{i, mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VSHUFPD", - Operands: []operand.Op{i, mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VSHUFPS: Shuffle Packed Single-Precision Floating-Point Values. @@ -19797,16 +31092,35 @@ func VSHUFPD(i, mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VSHUFPS(i, mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(i) && operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VSHUFPS", + Operands: []operand.Op{i, mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsImm8(i) && operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VSHUFPS", + Operands: []operand.Op{i, mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsImm8(i) && operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VSHUFPS", + Operands: []operand.Op{i, mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsImm8(i) && operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VSHUFPS", + Operands: []operand.Op{i, mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VSHUFPS", - Operands: []operand.Op{i, mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VSQRTPD: Compute Square Roots of Packed Double-Precision Floating-Point Values. @@ -19820,16 +31134,35 @@ func VSHUFPS(i, mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VSQRTPD(mxy, xy operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VSQRTPD", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VSQRTPD", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy): + return &avo.Instruction{ + Opcode: "VSQRTPD", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VSQRTPD", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil } - return &avo.Instruction{ - Opcode: "VSQRTPD", - Operands: []operand.Op{mxy, xy}, - }, nil + return nil, ErrBadOperandTypes } // VSQRTPS: Compute Square Roots of Packed Single-Precision Floating-Point Values. @@ -19843,16 +31176,35 @@ func VSQRTPD(mxy, xy operand.Op) (*avo.Instruction, error) { func VSQRTPS(mxy, xy operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VSQRTPS", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VSQRTPS", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy): + return &avo.Instruction{ + Opcode: "VSQRTPS", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VSQRTPS", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy}, + Outputs: []operand.Op{xy}, + }, nil } - return &avo.Instruction{ - Opcode: "VSQRTPS", - Operands: []operand.Op{mxy, xy}, - }, nil + return nil, ErrBadOperandTypes } // VSQRTSD: Compute Square Root of Scalar Double-Precision Floating-Point Value. @@ -19864,14 +31216,21 @@ func VSQRTPS(mxy, xy operand.Op) (*avo.Instruction, error) { func VSQRTSD(mx, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VSQRTSD", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsM64(mx) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VSQRTSD", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VSQRTSD", - Operands: []operand.Op{mx, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VSQRTSS: Compute Square Root of Scalar Single-Precision Floating-Point Value. @@ -19883,14 +31242,21 @@ func VSQRTSD(mx, x, x1 operand.Op) (*avo.Instruction, error) { func VSQRTSS(mx, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VSQRTSS", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsM32(mx) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VSQRTSS", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VSQRTSS", - Operands: []operand.Op{mx, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VSTMXCSR: Store MXCSR Register State. @@ -19901,13 +31267,14 @@ func VSQRTSS(mx, x, x1 operand.Op) (*avo.Instruction, error) { func VSTMXCSR(m operand.Op) (*avo.Instruction, error) { switch { case operand.IsM32(m): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VSTMXCSR", + Operands: []operand.Op{m}, + Inputs: []operand.Op{}, + Outputs: []operand.Op{m}, + }, nil } - return &avo.Instruction{ - Opcode: "VSTMXCSR", - Operands: []operand.Op{m}, - }, nil + return nil, ErrBadOperandTypes } // VSUBPD: Subtract Packed Double-Precision Floating-Point Values. @@ -19921,16 +31288,35 @@ func VSTMXCSR(m operand.Op) (*avo.Instruction, error) { func VSUBPD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VSUBPD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VSUBPD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VSUBPD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VSUBPD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VSUBPD", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VSUBPS: Subtract Packed Single-Precision Floating-Point Values. @@ -19944,16 +31330,35 @@ func VSUBPD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VSUBPS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VSUBPS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VSUBPS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VSUBPS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VSUBPS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VSUBPS", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VSUBSD: Subtract Scalar Double-Precision Floating-Point Values. @@ -19965,14 +31370,21 @@ func VSUBPS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VSUBSD(mx, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VSUBSD", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsM64(mx) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VSUBSD", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VSUBSD", - Operands: []operand.Op{mx, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VSUBSS: Subtract Scalar Single-Precision Floating-Point Values. @@ -19984,14 +31396,21 @@ func VSUBSD(mx, x, x1 operand.Op) (*avo.Instruction, error) { func VSUBSS(mx, x, x1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x) && operand.IsXmm(x1): + return &avo.Instruction{ + Opcode: "VSUBSS", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x1}, + }, nil case operand.IsM32(mx) && operand.IsXmm(x) && operand.IsXmm(x1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VSUBSS", + Operands: []operand.Op{mx, x, x1}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x1}, + }, nil } - return &avo.Instruction{ - Opcode: "VSUBSS", - Operands: []operand.Op{mx, x, x1}, - }, nil + return nil, ErrBadOperandTypes } // VTESTPD: Packed Double-Precision Floating-Point Bit Test. @@ -20005,16 +31424,35 @@ func VSUBSS(mx, x, x1 operand.Op) (*avo.Instruction, error) { func VTESTPD(mxy, xy operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VTESTPD", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VTESTPD", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy): + return &avo.Instruction{ + Opcode: "VTESTPD", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VTESTPD", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "VTESTPD", - Operands: []operand.Op{mxy, xy}, - }, nil + return nil, ErrBadOperandTypes } // VTESTPS: Packed Single-Precision Floating-Point Bit Test. @@ -20028,16 +31466,35 @@ func VTESTPD(mxy, xy operand.Op) (*avo.Instruction, error) { func VTESTPS(mxy, xy operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VTESTPS", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy): + return &avo.Instruction{ + Opcode: "VTESTPS", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy): + return &avo.Instruction{ + Opcode: "VTESTPS", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VTESTPS", + Operands: []operand.Op{mxy, xy}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "VTESTPS", - Operands: []operand.Op{mxy, xy}, - }, nil + return nil, ErrBadOperandTypes } // VUCOMISD: Unordered Compare Scalar Double-Precision Floating-Point Values and Set EFLAGS. @@ -20049,14 +31506,21 @@ func VTESTPS(mxy, xy operand.Op) (*avo.Instruction, error) { func VUCOMISD(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "VUCOMISD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{}, + }, nil case operand.IsM64(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VUCOMISD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "VUCOMISD", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // VUCOMISS: Unordered Compare Scalar Single-Precision Floating-Point Values and Set EFLAGS. @@ -20068,14 +31532,21 @@ func VUCOMISD(mx, x operand.Op) (*avo.Instruction, error) { func VUCOMISS(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "VUCOMISS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{}, + }, nil case operand.IsM32(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VUCOMISS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{}, + }, nil } - return &avo.Instruction{ - Opcode: "VUCOMISS", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // VUNPCKHPD: Unpack and Interleave High Packed Double-Precision Floating-Point Values. @@ -20089,16 +31560,35 @@ func VUCOMISS(mx, x operand.Op) (*avo.Instruction, error) { func VUNPCKHPD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VUNPCKHPD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VUNPCKHPD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VUNPCKHPD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VUNPCKHPD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VUNPCKHPD", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VUNPCKHPS: Unpack and Interleave High Packed Single-Precision Floating-Point Values. @@ -20112,16 +31602,35 @@ func VUNPCKHPD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VUNPCKHPS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VUNPCKHPS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VUNPCKHPS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VUNPCKHPS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VUNPCKHPS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VUNPCKHPS", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VUNPCKLPD: Unpack and Interleave Low Packed Double-Precision Floating-Point Values. @@ -20135,16 +31644,35 @@ func VUNPCKHPS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VUNPCKLPD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VUNPCKLPD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VUNPCKLPD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VUNPCKLPD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VUNPCKLPD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VUNPCKLPD", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VUNPCKLPS: Unpack and Interleave Low Packed Single-Precision Floating-Point Values. @@ -20158,16 +31686,35 @@ func VUNPCKLPD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VUNPCKLPS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VUNPCKLPS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VUNPCKLPS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VUNPCKLPS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VUNPCKLPS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VUNPCKLPS", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VXORPD: Bitwise Logical XOR for Double-Precision Floating-Point Values. @@ -20181,16 +31728,35 @@ func VUNPCKLPS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VXORPD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VXORPD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VXORPD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VXORPD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VXORPD", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VXORPD", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VXORPS: Bitwise Logical XOR for Single-Precision Floating-Point Values. @@ -20204,16 +31770,35 @@ func VXORPD(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { func VXORPS(mxy, xy, xy1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VXORPS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM128(mxy) && operand.IsXmm(xy) && operand.IsXmm(xy1): + return &avo.Instruction{ + Opcode: "VXORPS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsYmm(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): + return &avo.Instruction{ + Opcode: "VXORPS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil case operand.IsM256(mxy) && operand.IsYmm(xy) && operand.IsYmm(xy1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "VXORPS", + Operands: []operand.Op{mxy, xy, xy1}, + Inputs: []operand.Op{mxy, xy}, + Outputs: []operand.Op{xy1}, + }, nil } - return &avo.Instruction{ - Opcode: "VXORPS", - Operands: []operand.Op{mxy, xy, xy1}, - }, nil + return nil, ErrBadOperandTypes } // VZEROALL: Zero All YMM Registers. @@ -20225,6 +31810,8 @@ func VZEROALL() (*avo.Instruction, error) { return &avo.Instruction{ Opcode: "VZEROALL", Operands: nil, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, }, nil } @@ -20237,6 +31824,8 @@ func VZEROUPPER() (*avo.Instruction, error) { return &avo.Instruction{ Opcode: "VZEROUPPER", Operands: nil, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, }, nil } @@ -20249,14 +31838,21 @@ func VZEROUPPER() (*avo.Instruction, error) { func XADDB(r, mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsR8(r) && operand.IsR8(mr): + return &avo.Instruction{ + Opcode: "XADDB", + Operands: []operand.Op{r, mr}, + Inputs: []operand.Op{r, mr}, + Outputs: []operand.Op{r, mr}, + }, nil case operand.IsR8(r) && operand.IsM8(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "XADDB", + Operands: []operand.Op{r, mr}, + Inputs: []operand.Op{r, mr}, + Outputs: []operand.Op{r, mr}, + }, nil } - return &avo.Instruction{ - Opcode: "XADDB", - Operands: []operand.Op{r, mr}, - }, nil + return nil, ErrBadOperandTypes } // XADDL: Exchange and Add. @@ -20268,14 +31864,21 @@ func XADDB(r, mr operand.Op) (*avo.Instruction, error) { func XADDL(r, mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsR32(r) && operand.IsR32(mr): + return &avo.Instruction{ + Opcode: "XADDL", + Operands: []operand.Op{r, mr}, + Inputs: []operand.Op{r, mr}, + Outputs: []operand.Op{r, mr}, + }, nil case operand.IsR32(r) && operand.IsM32(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "XADDL", + Operands: []operand.Op{r, mr}, + Inputs: []operand.Op{r, mr}, + Outputs: []operand.Op{r, mr}, + }, nil } - return &avo.Instruction{ - Opcode: "XADDL", - Operands: []operand.Op{r, mr}, - }, nil + return nil, ErrBadOperandTypes } // XADDQ: Exchange and Add. @@ -20287,14 +31890,21 @@ func XADDL(r, mr operand.Op) (*avo.Instruction, error) { func XADDQ(r, mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsR64(r) && operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "XADDQ", + Operands: []operand.Op{r, mr}, + Inputs: []operand.Op{r, mr}, + Outputs: []operand.Op{r, mr}, + }, nil case operand.IsR64(r) && operand.IsM64(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "XADDQ", + Operands: []operand.Op{r, mr}, + Inputs: []operand.Op{r, mr}, + Outputs: []operand.Op{r, mr}, + }, nil } - return &avo.Instruction{ - Opcode: "XADDQ", - Operands: []operand.Op{r, mr}, - }, nil + return nil, ErrBadOperandTypes } // XADDW: Exchange and Add. @@ -20306,14 +31916,21 @@ func XADDQ(r, mr operand.Op) (*avo.Instruction, error) { func XADDW(r, mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsR16(r) && operand.IsR16(mr): + return &avo.Instruction{ + Opcode: "XADDW", + Operands: []operand.Op{r, mr}, + Inputs: []operand.Op{r, mr}, + Outputs: []operand.Op{r, mr}, + }, nil case operand.IsR16(r) && operand.IsM16(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "XADDW", + Operands: []operand.Op{r, mr}, + Inputs: []operand.Op{r, mr}, + Outputs: []operand.Op{r, mr}, + }, nil } - return &avo.Instruction{ - Opcode: "XADDW", - Operands: []operand.Op{r, mr}, - }, nil + return nil, ErrBadOperandTypes } // XCHGB: Exchange Register/Memory with Register. @@ -20326,15 +31943,28 @@ func XADDW(r, mr operand.Op) (*avo.Instruction, error) { func XCHGB(mr, mr1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsR8(mr) && operand.IsR8(mr1): + return &avo.Instruction{ + Opcode: "XCHGB", + Operands: []operand.Op{mr, mr1}, + Inputs: []operand.Op{mr, mr1}, + Outputs: []operand.Op{mr, mr1}, + }, nil case operand.IsM8(mr) && operand.IsR8(mr1): + return &avo.Instruction{ + Opcode: "XCHGB", + Operands: []operand.Op{mr, mr1}, + Inputs: []operand.Op{mr, mr1}, + Outputs: []operand.Op{mr, mr1}, + }, nil case operand.IsR8(mr) && operand.IsM8(mr1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "XCHGB", + Operands: []operand.Op{mr, mr1}, + Inputs: []operand.Op{mr, mr1}, + Outputs: []operand.Op{mr, mr1}, + }, nil } - return &avo.Instruction{ - Opcode: "XCHGB", - Operands: []operand.Op{mr, mr1}, - }, nil + return nil, ErrBadOperandTypes } // XCHGL: Exchange Register/Memory with Register. @@ -20349,17 +31979,42 @@ func XCHGB(mr, mr1 operand.Op) (*avo.Instruction, error) { func XCHGL(emr, emr1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsR32(emr) && operand.IsEax(emr1): + return &avo.Instruction{ + Opcode: "XCHGL", + Operands: []operand.Op{emr, emr1}, + Inputs: []operand.Op{emr, emr1}, + Outputs: []operand.Op{emr, emr1}, + }, nil case operand.IsEax(emr) && operand.IsR32(emr1): + return &avo.Instruction{ + Opcode: "XCHGL", + Operands: []operand.Op{emr, emr1}, + Inputs: []operand.Op{emr, emr1}, + Outputs: []operand.Op{emr, emr1}, + }, nil case operand.IsR32(emr) && operand.IsR32(emr1): + return &avo.Instruction{ + Opcode: "XCHGL", + Operands: []operand.Op{emr, emr1}, + Inputs: []operand.Op{emr, emr1}, + Outputs: []operand.Op{emr, emr1}, + }, nil case operand.IsM32(emr) && operand.IsR32(emr1): + return &avo.Instruction{ + Opcode: "XCHGL", + Operands: []operand.Op{emr, emr1}, + Inputs: []operand.Op{emr, emr1}, + Outputs: []operand.Op{emr, emr1}, + }, nil case operand.IsR32(emr) && operand.IsM32(emr1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "XCHGL", + Operands: []operand.Op{emr, emr1}, + Inputs: []operand.Op{emr, emr1}, + Outputs: []operand.Op{emr, emr1}, + }, nil } - return &avo.Instruction{ - Opcode: "XCHGL", - Operands: []operand.Op{emr, emr1}, - }, nil + return nil, ErrBadOperandTypes } // XCHGQ: Exchange Register/Memory with Register. @@ -20374,17 +32029,42 @@ func XCHGL(emr, emr1 operand.Op) (*avo.Instruction, error) { func XCHGQ(mr, mr1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsR64(mr) && operand.IsRax(mr1): + return &avo.Instruction{ + Opcode: "XCHGQ", + Operands: []operand.Op{mr, mr1}, + Inputs: []operand.Op{mr, mr1}, + Outputs: []operand.Op{mr, mr1}, + }, nil case operand.IsRax(mr) && operand.IsR64(mr1): + return &avo.Instruction{ + Opcode: "XCHGQ", + Operands: []operand.Op{mr, mr1}, + Inputs: []operand.Op{mr, mr1}, + Outputs: []operand.Op{mr, mr1}, + }, nil case operand.IsR64(mr) && operand.IsR64(mr1): + return &avo.Instruction{ + Opcode: "XCHGQ", + Operands: []operand.Op{mr, mr1}, + Inputs: []operand.Op{mr, mr1}, + Outputs: []operand.Op{mr, mr1}, + }, nil case operand.IsM64(mr) && operand.IsR64(mr1): + return &avo.Instruction{ + Opcode: "XCHGQ", + Operands: []operand.Op{mr, mr1}, + Inputs: []operand.Op{mr, mr1}, + Outputs: []operand.Op{mr, mr1}, + }, nil case operand.IsR64(mr) && operand.IsM64(mr1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "XCHGQ", + Operands: []operand.Op{mr, mr1}, + Inputs: []operand.Op{mr, mr1}, + Outputs: []operand.Op{mr, mr1}, + }, nil } - return &avo.Instruction{ - Opcode: "XCHGQ", - Operands: []operand.Op{mr, mr1}, - }, nil + return nil, ErrBadOperandTypes } // XCHGW: Exchange Register/Memory with Register. @@ -20399,17 +32079,42 @@ func XCHGQ(mr, mr1 operand.Op) (*avo.Instruction, error) { func XCHGW(amr, amr1 operand.Op) (*avo.Instruction, error) { switch { case operand.IsR16(amr) && operand.IsAx(amr1): + return &avo.Instruction{ + Opcode: "XCHGW", + Operands: []operand.Op{amr, amr1}, + Inputs: []operand.Op{amr, amr1}, + Outputs: []operand.Op{amr, amr1}, + }, nil case operand.IsAx(amr) && operand.IsR16(amr1): + return &avo.Instruction{ + Opcode: "XCHGW", + Operands: []operand.Op{amr, amr1}, + Inputs: []operand.Op{amr, amr1}, + Outputs: []operand.Op{amr, amr1}, + }, nil case operand.IsR16(amr) && operand.IsR16(amr1): + return &avo.Instruction{ + Opcode: "XCHGW", + Operands: []operand.Op{amr, amr1}, + Inputs: []operand.Op{amr, amr1}, + Outputs: []operand.Op{amr, amr1}, + }, nil case operand.IsM16(amr) && operand.IsR16(amr1): + return &avo.Instruction{ + Opcode: "XCHGW", + Operands: []operand.Op{amr, amr1}, + Inputs: []operand.Op{amr, amr1}, + Outputs: []operand.Op{amr, amr1}, + }, nil case operand.IsR16(amr) && operand.IsM16(amr1): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "XCHGW", + Operands: []operand.Op{amr, amr1}, + Inputs: []operand.Op{amr, amr1}, + Outputs: []operand.Op{amr, amr1}, + }, nil } - return &avo.Instruction{ - Opcode: "XCHGW", - Operands: []operand.Op{amr, amr1}, - }, nil + return nil, ErrBadOperandTypes } // XGETBV: Get Value of Extended Control Register. @@ -20421,6 +32126,8 @@ func XGETBV() (*avo.Instruction, error) { return &avo.Instruction{ Opcode: "XGETBV", Operands: nil, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, }, nil } @@ -20429,11 +32136,12 @@ func XGETBV() (*avo.Instruction, error) { // Forms: // // XLAT -// XLAT func XLAT() (*avo.Instruction, error) { return &avo.Instruction{ Opcode: "XLAT", Operands: nil, + Inputs: []operand.Op{}, + Outputs: []operand.Op{}, }, nil } @@ -20450,18 +32158,49 @@ func XLAT() (*avo.Instruction, error) { func XORB(imr, amr operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm8(imr) && operand.IsAl(amr): + return &avo.Instruction{ + Opcode: "XORB", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsImm8(imr) && operand.IsR8(amr): + return &avo.Instruction{ + Opcode: "XORB", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsR8(imr) && operand.IsR8(amr): + return &avo.Instruction{ + Opcode: "XORB", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{imr, amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsM8(imr) && operand.IsR8(amr): + return &avo.Instruction{ + Opcode: "XORB", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{imr, amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsImm8(imr) && operand.IsM8(amr): + return &avo.Instruction{ + Opcode: "XORB", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsR8(imr) && operand.IsM8(amr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "XORB", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{imr, amr}, + Outputs: []operand.Op{amr}, + }, nil } - return &avo.Instruction{ - Opcode: "XORB", - Operands: []operand.Op{imr, amr}, - }, nil + return nil, ErrBadOperandTypes } // XORL: Logical Exclusive OR. @@ -20479,20 +32218,63 @@ func XORB(imr, amr operand.Op) (*avo.Instruction, error) { func XORL(imr, emr operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm32(imr) && operand.IsEax(emr): + return &avo.Instruction{ + Opcode: "XORL", + Operands: []operand.Op{imr, emr}, + Inputs: []operand.Op{emr}, + Outputs: []operand.Op{emr}, + }, nil case operand.IsImm8(imr) && operand.IsR32(emr): + return &avo.Instruction{ + Opcode: "XORL", + Operands: []operand.Op{imr, emr}, + Inputs: []operand.Op{emr}, + Outputs: []operand.Op{emr}, + }, nil case operand.IsImm32(imr) && operand.IsR32(emr): + return &avo.Instruction{ + Opcode: "XORL", + Operands: []operand.Op{imr, emr}, + Inputs: []operand.Op{emr}, + Outputs: []operand.Op{emr}, + }, nil case operand.IsR32(imr) && operand.IsR32(emr): + return &avo.Instruction{ + Opcode: "XORL", + Operands: []operand.Op{imr, emr}, + Inputs: []operand.Op{imr, emr}, + Outputs: []operand.Op{emr}, + }, nil case operand.IsM32(imr) && operand.IsR32(emr): + return &avo.Instruction{ + Opcode: "XORL", + Operands: []operand.Op{imr, emr}, + Inputs: []operand.Op{imr, emr}, + Outputs: []operand.Op{emr}, + }, nil case operand.IsImm8(imr) && operand.IsM32(emr): + return &avo.Instruction{ + Opcode: "XORL", + Operands: []operand.Op{imr, emr}, + Inputs: []operand.Op{emr}, + Outputs: []operand.Op{emr}, + }, nil case operand.IsImm32(imr) && operand.IsM32(emr): + return &avo.Instruction{ + Opcode: "XORL", + Operands: []operand.Op{imr, emr}, + Inputs: []operand.Op{emr}, + Outputs: []operand.Op{emr}, + }, nil case operand.IsR32(imr) && operand.IsM32(emr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "XORL", + Operands: []operand.Op{imr, emr}, + Inputs: []operand.Op{imr, emr}, + Outputs: []operand.Op{emr}, + }, nil } - return &avo.Instruction{ - Opcode: "XORL", - Operands: []operand.Op{imr, emr}, - }, nil + return nil, ErrBadOperandTypes } // XORPD: Bitwise Logical XOR for Double-Precision Floating-Point Values. @@ -20504,14 +32286,21 @@ func XORL(imr, emr operand.Op) (*avo.Instruction, error) { func XORPD(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "XORPD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "XORPD", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "XORPD", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // XORPS: Bitwise Logical XOR for Single-Precision Floating-Point Values. @@ -20523,14 +32312,21 @@ func XORPD(mx, x operand.Op) (*avo.Instruction, error) { func XORPS(mx, x operand.Op) (*avo.Instruction, error) { switch { case operand.IsXmm(mx) && operand.IsXmm(x): + return &avo.Instruction{ + Opcode: "XORPS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil case operand.IsM128(mx) && operand.IsXmm(x): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "XORPS", + Operands: []operand.Op{mx, x}, + Inputs: []operand.Op{mx, x}, + Outputs: []operand.Op{x}, + }, nil } - return &avo.Instruction{ - Opcode: "XORPS", - Operands: []operand.Op{mx, x}, - }, nil + return nil, ErrBadOperandTypes } // XORQ: Logical Exclusive OR. @@ -20548,20 +32344,63 @@ func XORPS(mx, x operand.Op) (*avo.Instruction, error) { func XORQ(imr, mr operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm32(imr) && operand.IsRax(mr): + return &avo.Instruction{ + Opcode: "XORQ", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(imr) && operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "XORQ", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm32(imr) && operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "XORQ", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsR64(imr) && operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "XORQ", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{imr, mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsM64(imr) && operand.IsR64(mr): + return &avo.Instruction{ + Opcode: "XORQ", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{imr, mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm8(imr) && operand.IsM64(mr): + return &avo.Instruction{ + Opcode: "XORQ", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsImm32(imr) && operand.IsM64(mr): + return &avo.Instruction{ + Opcode: "XORQ", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{mr}, + Outputs: []operand.Op{mr}, + }, nil case operand.IsR64(imr) && operand.IsM64(mr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "XORQ", + Operands: []operand.Op{imr, mr}, + Inputs: []operand.Op{imr, mr}, + Outputs: []operand.Op{mr}, + }, nil } - return &avo.Instruction{ - Opcode: "XORQ", - Operands: []operand.Op{imr, mr}, - }, nil + return nil, ErrBadOperandTypes } // XORW: Logical Exclusive OR. @@ -20579,18 +32418,61 @@ func XORQ(imr, mr operand.Op) (*avo.Instruction, error) { func XORW(imr, amr operand.Op) (*avo.Instruction, error) { switch { case operand.IsImm16(imr) && operand.IsAx(amr): + return &avo.Instruction{ + Opcode: "XORW", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsImm8(imr) && operand.IsR16(amr): + return &avo.Instruction{ + Opcode: "XORW", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsImm16(imr) && operand.IsR16(amr): + return &avo.Instruction{ + Opcode: "XORW", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsR16(imr) && operand.IsR16(amr): + return &avo.Instruction{ + Opcode: "XORW", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{imr, amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsM16(imr) && operand.IsR16(amr): + return &avo.Instruction{ + Opcode: "XORW", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{imr, amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsImm8(imr) && operand.IsM16(amr): + return &avo.Instruction{ + Opcode: "XORW", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsImm16(imr) && operand.IsM16(amr): + return &avo.Instruction{ + Opcode: "XORW", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{amr}, + Outputs: []operand.Op{amr}, + }, nil case operand.IsR16(imr) && operand.IsM16(amr): - default: - return nil, ErrBadOperandTypes + return &avo.Instruction{ + Opcode: "XORW", + Operands: []operand.Op{imr, amr}, + Inputs: []operand.Op{imr, amr}, + Outputs: []operand.Op{amr}, + }, nil } - return &avo.Instruction{ - Opcode: "XORW", - Operands: []operand.Op{imr, amr}, - }, nil + return nil, ErrBadOperandTypes } diff --git a/x86/zctors_test.go b/x86/zctors_test.go index 67dad69..103210f 100644 --- a/x86/zctors_test.go +++ b/x86/zctors_test.go @@ -3040,11 +3040,6 @@ func TestCVTPL2PDValidForms(t *testing.T) { t.Fatal(err) } }) - t.Run("form=m64_xmm", func(t *testing.T) { - if _, err := CVTPL2PD(operand.Mem{Base: reg.RBX, Index: reg.RCX, Scale: 8}, reg.X7); err != nil { - t.Fatal(err) - } - }) } func TestCVTPL2PSValidForms(t *testing.T) { @@ -3930,19 +3925,6 @@ func TestJAValidForms(t *testing.T) { t.Fatal(err) } }) - t.Run("form=rel8", func(t *testing.T) { - if _, err := JA(operand.Rel(math.MaxInt8)); err != nil { - t.Fatal(err) - } - }) - t.Run("form=rel32", func(t *testing.T) { - if _, err := JA(operand.Rel(math.MaxInt32)); err != nil { - t.Fatal(err) - } - if _, err := JA(operand.LabelRef("lbl")); err != nil { - t.Fatal(err) - } - }) } func TestJAEValidForms(t *testing.T) { @@ -3959,32 +3941,6 @@ func TestJAEValidForms(t *testing.T) { t.Fatal(err) } }) - t.Run("form=rel8", func(t *testing.T) { - if _, err := JAE(operand.Rel(math.MaxInt8)); err != nil { - t.Fatal(err) - } - }) - t.Run("form=rel32", func(t *testing.T) { - if _, err := JAE(operand.Rel(math.MaxInt32)); err != nil { - t.Fatal(err) - } - if _, err := JAE(operand.LabelRef("lbl")); err != nil { - t.Fatal(err) - } - }) - t.Run("form=rel8", func(t *testing.T) { - if _, err := JAE(operand.Rel(math.MaxInt8)); err != nil { - t.Fatal(err) - } - }) - t.Run("form=rel32", func(t *testing.T) { - if _, err := JAE(operand.Rel(math.MaxInt32)); err != nil { - t.Fatal(err) - } - if _, err := JAE(operand.LabelRef("lbl")); err != nil { - t.Fatal(err) - } - }) } func TestJBValidForms(t *testing.T) { @@ -4001,32 +3957,6 @@ func TestJBValidForms(t *testing.T) { t.Fatal(err) } }) - t.Run("form=rel8", func(t *testing.T) { - if _, err := JB(operand.Rel(math.MaxInt8)); err != nil { - t.Fatal(err) - } - }) - t.Run("form=rel32", func(t *testing.T) { - if _, err := JB(operand.Rel(math.MaxInt32)); err != nil { - t.Fatal(err) - } - if _, err := JB(operand.LabelRef("lbl")); err != nil { - t.Fatal(err) - } - }) - t.Run("form=rel8", func(t *testing.T) { - if _, err := JB(operand.Rel(math.MaxInt8)); err != nil { - t.Fatal(err) - } - }) - t.Run("form=rel32", func(t *testing.T) { - if _, err := JB(operand.Rel(math.MaxInt32)); err != nil { - t.Fatal(err) - } - if _, err := JB(operand.LabelRef("lbl")); err != nil { - t.Fatal(err) - } - }) } func TestJBEValidForms(t *testing.T) { @@ -4043,19 +3973,6 @@ func TestJBEValidForms(t *testing.T) { t.Fatal(err) } }) - t.Run("form=rel8", func(t *testing.T) { - if _, err := JBE(operand.Rel(math.MaxInt8)); err != nil { - t.Fatal(err) - } - }) - t.Run("form=rel32", func(t *testing.T) { - if _, err := JBE(operand.Rel(math.MaxInt32)); err != nil { - t.Fatal(err) - } - if _, err := JBE(operand.LabelRef("lbl")); err != nil { - t.Fatal(err) - } - }) } func TestJCValidForms(t *testing.T) { @@ -4072,32 +3989,6 @@ func TestJCValidForms(t *testing.T) { t.Fatal(err) } }) - t.Run("form=rel8", func(t *testing.T) { - if _, err := JC(operand.Rel(math.MaxInt8)); err != nil { - t.Fatal(err) - } - }) - t.Run("form=rel32", func(t *testing.T) { - if _, err := JC(operand.Rel(math.MaxInt32)); err != nil { - t.Fatal(err) - } - if _, err := JC(operand.LabelRef("lbl")); err != nil { - t.Fatal(err) - } - }) - t.Run("form=rel8", func(t *testing.T) { - if _, err := JC(operand.Rel(math.MaxInt8)); err != nil { - t.Fatal(err) - } - }) - t.Run("form=rel32", func(t *testing.T) { - if _, err := JC(operand.Rel(math.MaxInt32)); err != nil { - t.Fatal(err) - } - if _, err := JC(operand.LabelRef("lbl")); err != nil { - t.Fatal(err) - } - }) } func TestJCCValidForms(t *testing.T) { @@ -4114,32 +4005,6 @@ func TestJCCValidForms(t *testing.T) { t.Fatal(err) } }) - t.Run("form=rel8", func(t *testing.T) { - if _, err := JCC(operand.Rel(math.MaxInt8)); err != nil { - t.Fatal(err) - } - }) - t.Run("form=rel32", func(t *testing.T) { - if _, err := JCC(operand.Rel(math.MaxInt32)); err != nil { - t.Fatal(err) - } - if _, err := JCC(operand.LabelRef("lbl")); err != nil { - t.Fatal(err) - } - }) - t.Run("form=rel8", func(t *testing.T) { - if _, err := JCC(operand.Rel(math.MaxInt8)); err != nil { - t.Fatal(err) - } - }) - t.Run("form=rel32", func(t *testing.T) { - if _, err := JCC(operand.Rel(math.MaxInt32)); err != nil { - t.Fatal(err) - } - if _, err := JCC(operand.LabelRef("lbl")); err != nil { - t.Fatal(err) - } - }) } func TestJCSValidForms(t *testing.T) { @@ -4156,32 +4021,6 @@ func TestJCSValidForms(t *testing.T) { t.Fatal(err) } }) - t.Run("form=rel8", func(t *testing.T) { - if _, err := JCS(operand.Rel(math.MaxInt8)); err != nil { - t.Fatal(err) - } - }) - t.Run("form=rel32", func(t *testing.T) { - if _, err := JCS(operand.Rel(math.MaxInt32)); err != nil { - t.Fatal(err) - } - if _, err := JCS(operand.LabelRef("lbl")); err != nil { - t.Fatal(err) - } - }) - t.Run("form=rel8", func(t *testing.T) { - if _, err := JCS(operand.Rel(math.MaxInt8)); err != nil { - t.Fatal(err) - } - }) - t.Run("form=rel32", func(t *testing.T) { - if _, err := JCS(operand.Rel(math.MaxInt32)); err != nil { - t.Fatal(err) - } - if _, err := JCS(operand.LabelRef("lbl")); err != nil { - t.Fatal(err) - } - }) } func TestJCXZLValidForms(t *testing.T) { @@ -4214,19 +4053,6 @@ func TestJEValidForms(t *testing.T) { t.Fatal(err) } }) - t.Run("form=rel8", func(t *testing.T) { - if _, err := JE(operand.Rel(math.MaxInt8)); err != nil { - t.Fatal(err) - } - }) - t.Run("form=rel32", func(t *testing.T) { - if _, err := JE(operand.Rel(math.MaxInt32)); err != nil { - t.Fatal(err) - } - if _, err := JE(operand.LabelRef("lbl")); err != nil { - t.Fatal(err) - } - }) } func TestJEQValidForms(t *testing.T) { @@ -4243,19 +4069,6 @@ func TestJEQValidForms(t *testing.T) { t.Fatal(err) } }) - t.Run("form=rel8", func(t *testing.T) { - if _, err := JEQ(operand.Rel(math.MaxInt8)); err != nil { - t.Fatal(err) - } - }) - t.Run("form=rel32", func(t *testing.T) { - if _, err := JEQ(operand.Rel(math.MaxInt32)); err != nil { - t.Fatal(err) - } - if _, err := JEQ(operand.LabelRef("lbl")); err != nil { - t.Fatal(err) - } - }) } func TestJGValidForms(t *testing.T) { @@ -4272,19 +4085,6 @@ func TestJGValidForms(t *testing.T) { t.Fatal(err) } }) - t.Run("form=rel8", func(t *testing.T) { - if _, err := JG(operand.Rel(math.MaxInt8)); err != nil { - t.Fatal(err) - } - }) - t.Run("form=rel32", func(t *testing.T) { - if _, err := JG(operand.Rel(math.MaxInt32)); err != nil { - t.Fatal(err) - } - if _, err := JG(operand.LabelRef("lbl")); err != nil { - t.Fatal(err) - } - }) } func TestJGEValidForms(t *testing.T) { @@ -4301,19 +4101,6 @@ func TestJGEValidForms(t *testing.T) { t.Fatal(err) } }) - t.Run("form=rel8", func(t *testing.T) { - if _, err := JGE(operand.Rel(math.MaxInt8)); err != nil { - t.Fatal(err) - } - }) - t.Run("form=rel32", func(t *testing.T) { - if _, err := JGE(operand.Rel(math.MaxInt32)); err != nil { - t.Fatal(err) - } - if _, err := JGE(operand.LabelRef("lbl")); err != nil { - t.Fatal(err) - } - }) } func TestJGTValidForms(t *testing.T) { @@ -4330,19 +4117,6 @@ func TestJGTValidForms(t *testing.T) { t.Fatal(err) } }) - t.Run("form=rel8", func(t *testing.T) { - if _, err := JGT(operand.Rel(math.MaxInt8)); err != nil { - t.Fatal(err) - } - }) - t.Run("form=rel32", func(t *testing.T) { - if _, err := JGT(operand.Rel(math.MaxInt32)); err != nil { - t.Fatal(err) - } - if _, err := JGT(operand.LabelRef("lbl")); err != nil { - t.Fatal(err) - } - }) } func TestJHIValidForms(t *testing.T) { @@ -4359,19 +4133,6 @@ func TestJHIValidForms(t *testing.T) { t.Fatal(err) } }) - t.Run("form=rel8", func(t *testing.T) { - if _, err := JHI(operand.Rel(math.MaxInt8)); err != nil { - t.Fatal(err) - } - }) - t.Run("form=rel32", func(t *testing.T) { - if _, err := JHI(operand.Rel(math.MaxInt32)); err != nil { - t.Fatal(err) - } - if _, err := JHI(operand.LabelRef("lbl")); err != nil { - t.Fatal(err) - } - }) } func TestJHSValidForms(t *testing.T) { @@ -4388,32 +4149,6 @@ func TestJHSValidForms(t *testing.T) { t.Fatal(err) } }) - t.Run("form=rel8", func(t *testing.T) { - if _, err := JHS(operand.Rel(math.MaxInt8)); err != nil { - t.Fatal(err) - } - }) - t.Run("form=rel32", func(t *testing.T) { - if _, err := JHS(operand.Rel(math.MaxInt32)); err != nil { - t.Fatal(err) - } - if _, err := JHS(operand.LabelRef("lbl")); err != nil { - t.Fatal(err) - } - }) - t.Run("form=rel8", func(t *testing.T) { - if _, err := JHS(operand.Rel(math.MaxInt8)); err != nil { - t.Fatal(err) - } - }) - t.Run("form=rel32", func(t *testing.T) { - if _, err := JHS(operand.Rel(math.MaxInt32)); err != nil { - t.Fatal(err) - } - if _, err := JHS(operand.LabelRef("lbl")); err != nil { - t.Fatal(err) - } - }) } func TestJLValidForms(t *testing.T) { @@ -4430,19 +4165,6 @@ func TestJLValidForms(t *testing.T) { t.Fatal(err) } }) - t.Run("form=rel8", func(t *testing.T) { - if _, err := JL(operand.Rel(math.MaxInt8)); err != nil { - t.Fatal(err) - } - }) - t.Run("form=rel32", func(t *testing.T) { - if _, err := JL(operand.Rel(math.MaxInt32)); err != nil { - t.Fatal(err) - } - if _, err := JL(operand.LabelRef("lbl")); err != nil { - t.Fatal(err) - } - }) } func TestJLEValidForms(t *testing.T) { @@ -4459,19 +4181,6 @@ func TestJLEValidForms(t *testing.T) { t.Fatal(err) } }) - t.Run("form=rel8", func(t *testing.T) { - if _, err := JLE(operand.Rel(math.MaxInt8)); err != nil { - t.Fatal(err) - } - }) - t.Run("form=rel32", func(t *testing.T) { - if _, err := JLE(operand.Rel(math.MaxInt32)); err != nil { - t.Fatal(err) - } - if _, err := JLE(operand.LabelRef("lbl")); err != nil { - t.Fatal(err) - } - }) } func TestJLOValidForms(t *testing.T) { @@ -4488,32 +4197,6 @@ func TestJLOValidForms(t *testing.T) { t.Fatal(err) } }) - t.Run("form=rel8", func(t *testing.T) { - if _, err := JLO(operand.Rel(math.MaxInt8)); err != nil { - t.Fatal(err) - } - }) - t.Run("form=rel32", func(t *testing.T) { - if _, err := JLO(operand.Rel(math.MaxInt32)); err != nil { - t.Fatal(err) - } - if _, err := JLO(operand.LabelRef("lbl")); err != nil { - t.Fatal(err) - } - }) - t.Run("form=rel8", func(t *testing.T) { - if _, err := JLO(operand.Rel(math.MaxInt8)); err != nil { - t.Fatal(err) - } - }) - t.Run("form=rel32", func(t *testing.T) { - if _, err := JLO(operand.Rel(math.MaxInt32)); err != nil { - t.Fatal(err) - } - if _, err := JLO(operand.LabelRef("lbl")); err != nil { - t.Fatal(err) - } - }) } func TestJLSValidForms(t *testing.T) { @@ -4530,19 +4213,6 @@ func TestJLSValidForms(t *testing.T) { t.Fatal(err) } }) - t.Run("form=rel8", func(t *testing.T) { - if _, err := JLS(operand.Rel(math.MaxInt8)); err != nil { - t.Fatal(err) - } - }) - t.Run("form=rel32", func(t *testing.T) { - if _, err := JLS(operand.Rel(math.MaxInt32)); err != nil { - t.Fatal(err) - } - if _, err := JLS(operand.LabelRef("lbl")); err != nil { - t.Fatal(err) - } - }) } func TestJLTValidForms(t *testing.T) { @@ -4559,19 +4229,6 @@ func TestJLTValidForms(t *testing.T) { t.Fatal(err) } }) - t.Run("form=rel8", func(t *testing.T) { - if _, err := JLT(operand.Rel(math.MaxInt8)); err != nil { - t.Fatal(err) - } - }) - t.Run("form=rel32", func(t *testing.T) { - if _, err := JLT(operand.Rel(math.MaxInt32)); err != nil { - t.Fatal(err) - } - if _, err := JLT(operand.LabelRef("lbl")); err != nil { - t.Fatal(err) - } - }) } func TestJMIValidForms(t *testing.T) { @@ -4630,19 +4287,6 @@ func TestJNAValidForms(t *testing.T) { t.Fatal(err) } }) - t.Run("form=rel8", func(t *testing.T) { - if _, err := JNA(operand.Rel(math.MaxInt8)); err != nil { - t.Fatal(err) - } - }) - t.Run("form=rel32", func(t *testing.T) { - if _, err := JNA(operand.Rel(math.MaxInt32)); err != nil { - t.Fatal(err) - } - if _, err := JNA(operand.LabelRef("lbl")); err != nil { - t.Fatal(err) - } - }) } func TestJNAEValidForms(t *testing.T) { @@ -4659,32 +4303,6 @@ func TestJNAEValidForms(t *testing.T) { t.Fatal(err) } }) - t.Run("form=rel8", func(t *testing.T) { - if _, err := JNAE(operand.Rel(math.MaxInt8)); err != nil { - t.Fatal(err) - } - }) - t.Run("form=rel32", func(t *testing.T) { - if _, err := JNAE(operand.Rel(math.MaxInt32)); err != nil { - t.Fatal(err) - } - if _, err := JNAE(operand.LabelRef("lbl")); err != nil { - t.Fatal(err) - } - }) - t.Run("form=rel8", func(t *testing.T) { - if _, err := JNAE(operand.Rel(math.MaxInt8)); err != nil { - t.Fatal(err) - } - }) - t.Run("form=rel32", func(t *testing.T) { - if _, err := JNAE(operand.Rel(math.MaxInt32)); err != nil { - t.Fatal(err) - } - if _, err := JNAE(operand.LabelRef("lbl")); err != nil { - t.Fatal(err) - } - }) } func TestJNBValidForms(t *testing.T) { @@ -4701,32 +4319,6 @@ func TestJNBValidForms(t *testing.T) { t.Fatal(err) } }) - t.Run("form=rel8", func(t *testing.T) { - if _, err := JNB(operand.Rel(math.MaxInt8)); err != nil { - t.Fatal(err) - } - }) - t.Run("form=rel32", func(t *testing.T) { - if _, err := JNB(operand.Rel(math.MaxInt32)); err != nil { - t.Fatal(err) - } - if _, err := JNB(operand.LabelRef("lbl")); err != nil { - t.Fatal(err) - } - }) - t.Run("form=rel8", func(t *testing.T) { - if _, err := JNB(operand.Rel(math.MaxInt8)); err != nil { - t.Fatal(err) - } - }) - t.Run("form=rel32", func(t *testing.T) { - if _, err := JNB(operand.Rel(math.MaxInt32)); err != nil { - t.Fatal(err) - } - if _, err := JNB(operand.LabelRef("lbl")); err != nil { - t.Fatal(err) - } - }) } func TestJNBEValidForms(t *testing.T) { @@ -4743,19 +4335,6 @@ func TestJNBEValidForms(t *testing.T) { t.Fatal(err) } }) - t.Run("form=rel8", func(t *testing.T) { - if _, err := JNBE(operand.Rel(math.MaxInt8)); err != nil { - t.Fatal(err) - } - }) - t.Run("form=rel32", func(t *testing.T) { - if _, err := JNBE(operand.Rel(math.MaxInt32)); err != nil { - t.Fatal(err) - } - if _, err := JNBE(operand.LabelRef("lbl")); err != nil { - t.Fatal(err) - } - }) } func TestJNCValidForms(t *testing.T) { @@ -4772,32 +4351,6 @@ func TestJNCValidForms(t *testing.T) { t.Fatal(err) } }) - t.Run("form=rel8", func(t *testing.T) { - if _, err := JNC(operand.Rel(math.MaxInt8)); err != nil { - t.Fatal(err) - } - }) - t.Run("form=rel32", func(t *testing.T) { - if _, err := JNC(operand.Rel(math.MaxInt32)); err != nil { - t.Fatal(err) - } - if _, err := JNC(operand.LabelRef("lbl")); err != nil { - t.Fatal(err) - } - }) - t.Run("form=rel8", func(t *testing.T) { - if _, err := JNC(operand.Rel(math.MaxInt8)); err != nil { - t.Fatal(err) - } - }) - t.Run("form=rel32", func(t *testing.T) { - if _, err := JNC(operand.Rel(math.MaxInt32)); err != nil { - t.Fatal(err) - } - if _, err := JNC(operand.LabelRef("lbl")); err != nil { - t.Fatal(err) - } - }) } func TestJNEValidForms(t *testing.T) { @@ -4814,19 +4367,6 @@ func TestJNEValidForms(t *testing.T) { t.Fatal(err) } }) - t.Run("form=rel8", func(t *testing.T) { - if _, err := JNE(operand.Rel(math.MaxInt8)); err != nil { - t.Fatal(err) - } - }) - t.Run("form=rel32", func(t *testing.T) { - if _, err := JNE(operand.Rel(math.MaxInt32)); err != nil { - t.Fatal(err) - } - if _, err := JNE(operand.LabelRef("lbl")); err != nil { - t.Fatal(err) - } - }) } func TestJNGValidForms(t *testing.T) { @@ -4843,19 +4383,6 @@ func TestJNGValidForms(t *testing.T) { t.Fatal(err) } }) - t.Run("form=rel8", func(t *testing.T) { - if _, err := JNG(operand.Rel(math.MaxInt8)); err != nil { - t.Fatal(err) - } - }) - t.Run("form=rel32", func(t *testing.T) { - if _, err := JNG(operand.Rel(math.MaxInt32)); err != nil { - t.Fatal(err) - } - if _, err := JNG(operand.LabelRef("lbl")); err != nil { - t.Fatal(err) - } - }) } func TestJNGEValidForms(t *testing.T) { @@ -4872,19 +4399,6 @@ func TestJNGEValidForms(t *testing.T) { t.Fatal(err) } }) - t.Run("form=rel8", func(t *testing.T) { - if _, err := JNGE(operand.Rel(math.MaxInt8)); err != nil { - t.Fatal(err) - } - }) - t.Run("form=rel32", func(t *testing.T) { - if _, err := JNGE(operand.Rel(math.MaxInt32)); err != nil { - t.Fatal(err) - } - if _, err := JNGE(operand.LabelRef("lbl")); err != nil { - t.Fatal(err) - } - }) } func TestJNLValidForms(t *testing.T) { @@ -4901,19 +4415,6 @@ func TestJNLValidForms(t *testing.T) { t.Fatal(err) } }) - t.Run("form=rel8", func(t *testing.T) { - if _, err := JNL(operand.Rel(math.MaxInt8)); err != nil { - t.Fatal(err) - } - }) - t.Run("form=rel32", func(t *testing.T) { - if _, err := JNL(operand.Rel(math.MaxInt32)); err != nil { - t.Fatal(err) - } - if _, err := JNL(operand.LabelRef("lbl")); err != nil { - t.Fatal(err) - } - }) } func TestJNLEValidForms(t *testing.T) { @@ -4930,19 +4431,6 @@ func TestJNLEValidForms(t *testing.T) { t.Fatal(err) } }) - t.Run("form=rel8", func(t *testing.T) { - if _, err := JNLE(operand.Rel(math.MaxInt8)); err != nil { - t.Fatal(err) - } - }) - t.Run("form=rel32", func(t *testing.T) { - if _, err := JNLE(operand.Rel(math.MaxInt32)); err != nil { - t.Fatal(err) - } - if _, err := JNLE(operand.LabelRef("lbl")); err != nil { - t.Fatal(err) - } - }) } func TestJNOValidForms(t *testing.T) { @@ -4975,19 +4463,6 @@ func TestJNPValidForms(t *testing.T) { t.Fatal(err) } }) - t.Run("form=rel8", func(t *testing.T) { - if _, err := JNP(operand.Rel(math.MaxInt8)); err != nil { - t.Fatal(err) - } - }) - t.Run("form=rel32", func(t *testing.T) { - if _, err := JNP(operand.Rel(math.MaxInt32)); err != nil { - t.Fatal(err) - } - if _, err := JNP(operand.LabelRef("lbl")); err != nil { - t.Fatal(err) - } - }) } func TestJNSValidForms(t *testing.T) { @@ -5020,19 +4495,6 @@ func TestJNZValidForms(t *testing.T) { t.Fatal(err) } }) - t.Run("form=rel8", func(t *testing.T) { - if _, err := JNZ(operand.Rel(math.MaxInt8)); err != nil { - t.Fatal(err) - } - }) - t.Run("form=rel32", func(t *testing.T) { - if _, err := JNZ(operand.Rel(math.MaxInt32)); err != nil { - t.Fatal(err) - } - if _, err := JNZ(operand.LabelRef("lbl")); err != nil { - t.Fatal(err) - } - }) } func TestJOValidForms(t *testing.T) { @@ -5097,19 +4559,6 @@ func TestJPValidForms(t *testing.T) { t.Fatal(err) } }) - t.Run("form=rel8", func(t *testing.T) { - if _, err := JP(operand.Rel(math.MaxInt8)); err != nil { - t.Fatal(err) - } - }) - t.Run("form=rel32", func(t *testing.T) { - if _, err := JP(operand.Rel(math.MaxInt32)); err != nil { - t.Fatal(err) - } - if _, err := JP(operand.LabelRef("lbl")); err != nil { - t.Fatal(err) - } - }) } func TestJPCValidForms(t *testing.T) { @@ -5126,19 +4575,6 @@ func TestJPCValidForms(t *testing.T) { t.Fatal(err) } }) - t.Run("form=rel8", func(t *testing.T) { - if _, err := JPC(operand.Rel(math.MaxInt8)); err != nil { - t.Fatal(err) - } - }) - t.Run("form=rel32", func(t *testing.T) { - if _, err := JPC(operand.Rel(math.MaxInt32)); err != nil { - t.Fatal(err) - } - if _, err := JPC(operand.LabelRef("lbl")); err != nil { - t.Fatal(err) - } - }) } func TestJPEValidForms(t *testing.T) { @@ -5155,19 +4591,6 @@ func TestJPEValidForms(t *testing.T) { t.Fatal(err) } }) - t.Run("form=rel8", func(t *testing.T) { - if _, err := JPE(operand.Rel(math.MaxInt8)); err != nil { - t.Fatal(err) - } - }) - t.Run("form=rel32", func(t *testing.T) { - if _, err := JPE(operand.Rel(math.MaxInt32)); err != nil { - t.Fatal(err) - } - if _, err := JPE(operand.LabelRef("lbl")); err != nil { - t.Fatal(err) - } - }) } func TestJPLValidForms(t *testing.T) { @@ -5200,19 +4623,6 @@ func TestJPOValidForms(t *testing.T) { t.Fatal(err) } }) - t.Run("form=rel8", func(t *testing.T) { - if _, err := JPO(operand.Rel(math.MaxInt8)); err != nil { - t.Fatal(err) - } - }) - t.Run("form=rel32", func(t *testing.T) { - if _, err := JPO(operand.Rel(math.MaxInt32)); err != nil { - t.Fatal(err) - } - if _, err := JPO(operand.LabelRef("lbl")); err != nil { - t.Fatal(err) - } - }) } func TestJPSValidForms(t *testing.T) { @@ -5229,19 +4639,6 @@ func TestJPSValidForms(t *testing.T) { t.Fatal(err) } }) - t.Run("form=rel8", func(t *testing.T) { - if _, err := JPS(operand.Rel(math.MaxInt8)); err != nil { - t.Fatal(err) - } - }) - t.Run("form=rel32", func(t *testing.T) { - if _, err := JPS(operand.Rel(math.MaxInt32)); err != nil { - t.Fatal(err) - } - if _, err := JPS(operand.LabelRef("lbl")); err != nil { - t.Fatal(err) - } - }) } func TestJSValidForms(t *testing.T) { @@ -5274,19 +4671,6 @@ func TestJZValidForms(t *testing.T) { t.Fatal(err) } }) - t.Run("form=rel8", func(t *testing.T) { - if _, err := JZ(operand.Rel(math.MaxInt8)); err != nil { - t.Fatal(err) - } - }) - t.Run("form=rel32", func(t *testing.T) { - if _, err := JZ(operand.Rel(math.MaxInt32)); err != nil { - t.Fatal(err) - } - if _, err := JZ(operand.LabelRef("lbl")); err != nil { - t.Fatal(err) - } - }) } func TestLDDQUValidForms(t *testing.T) { @@ -10300,38 +9684,6 @@ func TestSETCCValidForms(t *testing.T) { t.Fatal(err) } }) - t.Run("form=r8", func(t *testing.T) { - if _, err := SETCC(reg.CH); err != nil { - t.Fatal(err) - } - if _, err := SETCC(reg.BL); err != nil { - t.Fatal(err) - } - if _, err := SETCC(reg.R13B); err != nil { - t.Fatal(err) - } - }) - t.Run("form=m8", func(t *testing.T) { - if _, err := SETCC(operand.Mem{Base: reg.BL, Index: reg.CH, Scale: 1}); err != nil { - t.Fatal(err) - } - }) - t.Run("form=r8", func(t *testing.T) { - if _, err := SETCC(reg.CH); err != nil { - t.Fatal(err) - } - if _, err := SETCC(reg.BL); err != nil { - t.Fatal(err) - } - if _, err := SETCC(reg.R13B); err != nil { - t.Fatal(err) - } - }) - t.Run("form=m8", func(t *testing.T) { - if _, err := SETCC(operand.Mem{Base: reg.BL, Index: reg.CH, Scale: 1}); err != nil { - t.Fatal(err) - } - }) } func TestSETCSValidForms(t *testing.T) { @@ -10351,38 +9703,6 @@ func TestSETCSValidForms(t *testing.T) { t.Fatal(err) } }) - t.Run("form=r8", func(t *testing.T) { - if _, err := SETCS(reg.CH); err != nil { - t.Fatal(err) - } - if _, err := SETCS(reg.BL); err != nil { - t.Fatal(err) - } - if _, err := SETCS(reg.R13B); err != nil { - t.Fatal(err) - } - }) - t.Run("form=m8", func(t *testing.T) { - if _, err := SETCS(operand.Mem{Base: reg.BL, Index: reg.CH, Scale: 1}); err != nil { - t.Fatal(err) - } - }) - t.Run("form=r8", func(t *testing.T) { - if _, err := SETCS(reg.CH); err != nil { - t.Fatal(err) - } - if _, err := SETCS(reg.BL); err != nil { - t.Fatal(err) - } - if _, err := SETCS(reg.R13B); err != nil { - t.Fatal(err) - } - }) - t.Run("form=m8", func(t *testing.T) { - if _, err := SETCS(operand.Mem{Base: reg.BL, Index: reg.CH, Scale: 1}); err != nil { - t.Fatal(err) - } - }) } func TestSETEQValidForms(t *testing.T) { @@ -10402,22 +9722,6 @@ func TestSETEQValidForms(t *testing.T) { t.Fatal(err) } }) - t.Run("form=r8", func(t *testing.T) { - if _, err := SETEQ(reg.CH); err != nil { - t.Fatal(err) - } - if _, err := SETEQ(reg.BL); err != nil { - t.Fatal(err) - } - if _, err := SETEQ(reg.R13B); err != nil { - t.Fatal(err) - } - }) - t.Run("form=m8", func(t *testing.T) { - if _, err := SETEQ(operand.Mem{Base: reg.BL, Index: reg.CH, Scale: 1}); err != nil { - t.Fatal(err) - } - }) } func TestSETGEValidForms(t *testing.T) { @@ -10437,22 +9741,6 @@ func TestSETGEValidForms(t *testing.T) { t.Fatal(err) } }) - t.Run("form=r8", func(t *testing.T) { - if _, err := SETGE(reg.CH); err != nil { - t.Fatal(err) - } - if _, err := SETGE(reg.BL); err != nil { - t.Fatal(err) - } - if _, err := SETGE(reg.R13B); err != nil { - t.Fatal(err) - } - }) - t.Run("form=m8", func(t *testing.T) { - if _, err := SETGE(operand.Mem{Base: reg.BL, Index: reg.CH, Scale: 1}); err != nil { - t.Fatal(err) - } - }) } func TestSETGTValidForms(t *testing.T) { @@ -10472,22 +9760,6 @@ func TestSETGTValidForms(t *testing.T) { t.Fatal(err) } }) - t.Run("form=r8", func(t *testing.T) { - if _, err := SETGT(reg.CH); err != nil { - t.Fatal(err) - } - if _, err := SETGT(reg.BL); err != nil { - t.Fatal(err) - } - if _, err := SETGT(reg.R13B); err != nil { - t.Fatal(err) - } - }) - t.Run("form=m8", func(t *testing.T) { - if _, err := SETGT(operand.Mem{Base: reg.BL, Index: reg.CH, Scale: 1}); err != nil { - t.Fatal(err) - } - }) } func TestSETHIValidForms(t *testing.T) { @@ -10507,22 +9779,6 @@ func TestSETHIValidForms(t *testing.T) { t.Fatal(err) } }) - t.Run("form=r8", func(t *testing.T) { - if _, err := SETHI(reg.CH); err != nil { - t.Fatal(err) - } - if _, err := SETHI(reg.BL); err != nil { - t.Fatal(err) - } - if _, err := SETHI(reg.R13B); err != nil { - t.Fatal(err) - } - }) - t.Run("form=m8", func(t *testing.T) { - if _, err := SETHI(operand.Mem{Base: reg.BL, Index: reg.CH, Scale: 1}); err != nil { - t.Fatal(err) - } - }) } func TestSETLEValidForms(t *testing.T) { @@ -10542,22 +9798,6 @@ func TestSETLEValidForms(t *testing.T) { t.Fatal(err) } }) - t.Run("form=r8", func(t *testing.T) { - if _, err := SETLE(reg.CH); err != nil { - t.Fatal(err) - } - if _, err := SETLE(reg.BL); err != nil { - t.Fatal(err) - } - if _, err := SETLE(reg.R13B); err != nil { - t.Fatal(err) - } - }) - t.Run("form=m8", func(t *testing.T) { - if _, err := SETLE(operand.Mem{Base: reg.BL, Index: reg.CH, Scale: 1}); err != nil { - t.Fatal(err) - } - }) } func TestSETLSValidForms(t *testing.T) { @@ -10577,22 +9817,6 @@ func TestSETLSValidForms(t *testing.T) { t.Fatal(err) } }) - t.Run("form=r8", func(t *testing.T) { - if _, err := SETLS(reg.CH); err != nil { - t.Fatal(err) - } - if _, err := SETLS(reg.BL); err != nil { - t.Fatal(err) - } - if _, err := SETLS(reg.R13B); err != nil { - t.Fatal(err) - } - }) - t.Run("form=m8", func(t *testing.T) { - if _, err := SETLS(operand.Mem{Base: reg.BL, Index: reg.CH, Scale: 1}); err != nil { - t.Fatal(err) - } - }) } func TestSETLTValidForms(t *testing.T) { @@ -10612,22 +9836,6 @@ func TestSETLTValidForms(t *testing.T) { t.Fatal(err) } }) - t.Run("form=r8", func(t *testing.T) { - if _, err := SETLT(reg.CH); err != nil { - t.Fatal(err) - } - if _, err := SETLT(reg.BL); err != nil { - t.Fatal(err) - } - if _, err := SETLT(reg.R13B); err != nil { - t.Fatal(err) - } - }) - t.Run("form=m8", func(t *testing.T) { - if _, err := SETLT(operand.Mem{Base: reg.BL, Index: reg.CH, Scale: 1}); err != nil { - t.Fatal(err) - } - }) } func TestSETMIValidForms(t *testing.T) { @@ -10666,22 +9874,6 @@ func TestSETNEValidForms(t *testing.T) { t.Fatal(err) } }) - t.Run("form=r8", func(t *testing.T) { - if _, err := SETNE(reg.CH); err != nil { - t.Fatal(err) - } - if _, err := SETNE(reg.BL); err != nil { - t.Fatal(err) - } - if _, err := SETNE(reg.R13B); err != nil { - t.Fatal(err) - } - }) - t.Run("form=m8", func(t *testing.T) { - if _, err := SETNE(operand.Mem{Base: reg.BL, Index: reg.CH, Scale: 1}); err != nil { - t.Fatal(err) - } - }) } func TestSETOCValidForms(t *testing.T) { @@ -10739,22 +9931,6 @@ func TestSETPCValidForms(t *testing.T) { t.Fatal(err) } }) - t.Run("form=r8", func(t *testing.T) { - if _, err := SETPC(reg.CH); err != nil { - t.Fatal(err) - } - if _, err := SETPC(reg.BL); err != nil { - t.Fatal(err) - } - if _, err := SETPC(reg.R13B); err != nil { - t.Fatal(err) - } - }) - t.Run("form=m8", func(t *testing.T) { - if _, err := SETPC(operand.Mem{Base: reg.BL, Index: reg.CH, Scale: 1}); err != nil { - t.Fatal(err) - } - }) } func TestSETPLValidForms(t *testing.T) { @@ -10793,22 +9969,6 @@ func TestSETPSValidForms(t *testing.T) { t.Fatal(err) } }) - t.Run("form=r8", func(t *testing.T) { - if _, err := SETPS(reg.CH); err != nil { - t.Fatal(err) - } - if _, err := SETPS(reg.BL); err != nil { - t.Fatal(err) - } - if _, err := SETPS(reg.R13B); err != nil { - t.Fatal(err) - } - }) - t.Run("form=m8", func(t *testing.T) { - if _, err := SETPS(operand.Mem{Base: reg.BL, Index: reg.CH, Scale: 1}); err != nil { - t.Fatal(err) - } - }) } func TestSFENCEValidForms(t *testing.T) { @@ -19442,11 +18602,6 @@ func TestXLATValidForms(t *testing.T) { t.Fatal(err) } }) - t.Run("form=", func(t *testing.T) { - if _, err := XLAT(); err != nil { - t.Fatal(err) - } - }) } func TestXORBValidForms(t *testing.T) {